使用 SSH 密钥登录 Linux 服务器

通过 SSH 连接到 Linux 服务器最基本的是使用密码登录,这种方式易于使用且不需要进行过多的配置,但其安全性是受到挑战的。虽然可以结合 Fail2ban 使用来增强其安全性,但接下来要讨论的是 SSH 密钥登录,因为这种方式似乎也不逊色。

添加用户

Linux 系统中,root 用户拥有系统的所有特权,并且可以执行任何命令,出于安全考虑,建议不要使用 root 执行日常任务。下面命令将添加一个名为 exaple_user 的用户,执行命令前应替换为所需的用户名。

1
adduser example_user

设置用户密码。

1
passwd example_user

授予用户 sudo 特权

打开 /etc/sudoers 文件。

1
visudo

查找如下的行。

1
root    ALL=(ALL)       ALL

在其下面添加一行以下内容。

1
example_user ALL=(ALL) ALL

生成 SSH 密钥

如果还没有 SSH 密钥,则替换下面命令中的电子邮件地址,在本地计算机中使用 Git Bash 生成密钥。

1
ssh-keygen -t ed25519 -C "[email protected]"

推荐使用 Ed25519 类型的密钥。如果系统不支持,则改用以下的 RSA 类型。

1
ssh-keygen -t rsa -b 4096 -C "[email protected]"

将 SSH 密钥添加到 Linux 服务器

将 SSH 密钥添加到 example_user 用户的主目录中,假设服务器的 IP 地址为 192.168.1.6

1
ssh-copy-id [email protected]

使用 exaple_user 用户登录服务器,如果生成 SSH 密钥时未设置密码,则直接登录,如果设置了密码,则输入私钥的密码进行登录。

1
ssh [email protected]

配置 SSH

打开 /etc/ssh/sshd_config 文件,查找 PermitRootLoginPasswordAuthentication 项并修改。

  • 禁止 root 用户登录:
    1
    PermitRootLogin no
  • 禁止使用密码登录:
    1
    PasswordAuthentication no