前言
登陆VPS主机时看到有数千次的尝试错误登录消息,看来有人在扫描并尝试用弱密码登录,于是就把单纯用密码登录的方式取消掉,换成SSH密钥。
最初用PuTTYgen直接生成的公钥和私钥导致“Server refused our key”这种情况出现,于是乖乖的用系统的SSH生成吧。
生成密钥
ssh-keygen -m pem
提示设置密钥保存路径,如果当前登录的是root账户,则直接回车会自动在/root/.ssh文件夹中生成公钥和私钥;然后提示设置私钥文件的密码,按提示输入两次密码后,公钥id_rsa.pub
和私钥id_rsa
就生成了。
接下来将文件夹/root/.ssh中的id_rsa.pub
公钥文件修改名字为authorized_keys
,并且执行
chmod 600 /root/.ssh/authorized_keys
修改其文件权限。
编辑配置文件
编辑文件/etc/ssh/sshd_config
,把 #PubkeyAuthentication yes
前面的#
注释去掉。
重启SSHD服务
service sshd restart
生成PPK格式的私钥文件
使用WinSCP把/root/.ssh/id_rsa
这个私钥文件下载到本地。
用软件PuTTYgen的“Load”按钮载入它,输入之前设置的私钥文件的密码后,再点“Save private key”按钮生成PPK格式的私钥文件,例如private_key.ppk
。此时本地和远程的id_rsa
私钥文件都可以删除了。
测试使用私钥文件登录
在PuTTY配置窗口,展开至“Connection->SSH->Auth”,点击“Browse…”按钮加载本地私钥文件,然后连接服务器。

这时如果前面的步骤都正确了,除了输入用户名外,就不再提示输入用户名对应的密码,而是该私钥文件的密码。

修改配置文件:禁用密码登录方式
在确定上一步使用私钥文件登录成功后,再禁用密码登录,只允许通过密钥文件登录!
编辑/etc/ssh/sshd_config
,将PasswordAuthentication yes
改为PasswordAuthentication no
。
保存后,再次重启SSHD服务。
service sshd restart
至此,配置全部完成。