需求

当VPS暴露在外网中,就会有人不断暴力破解你的SSH登录。于是就有必要使用SSH密钥来登录。并关闭密码登录。

用以下命令可以查看别人暴力破解你SSH密码登录的大概情况!

grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more

 

就我自己的购买的VPS来说。暴力破解次数最多达到2475次!各位也可以去看看自己的。。

生成

使用ssh-keygen在自己的PC上来生成密钥对。Linux或者macOS都可以直接通过terminal来操作!如果是windows。需要用PuTTYgen软件来生成。

">[root@host ~]$ ssh-keygen -t rsa <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥

 

可参考Vultr官方生成教程

配置Vultr

创建VPS的时候可以直接制定SSH密钥登录。。如果是已经创建好的VPS。

  1. id_rsa.pub 放到/root/.ssh目录下。并改名为authorized_keys
  2. 修改sshd_config配置文件vi /etc/ssh/sshd_config
  3. 重启SSH服务,centos7使用命令systemctl restart sshd,centos6使用命令/etc/init.d/sshd restart

sshd_config配置文件修改相关选项如下:

RSAAuthentication yes #RSA认证
PubkeyAuthentication yes #开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys #验证文件路径
PasswordAuthentication no #禁止密码认证
PermitEmptyPasswords no #禁止空密码

自此。便成功更改为密钥登录!

其他

如果你用的是Window系统要登录VPS需要将私钥下载到客户端,然后转换为 PuTTY 能使用的格式

使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。

载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。

今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。