修改SSH通过密钥登录

最近连续几天都在折腾Linux服务器相关的东西,一上手的时候总是很新鲜,什么都想尝试一下。在搭建完Minecraft服务器之后就邀请朋友一起来玩儿,当然也是炫耀了一下自己的服务器,朋友问清情况后问了一句“root登陆关了吗?或者不让root用密码登陆了嘛?”,听了我一愣,“啥,关了不就没法用了嘛”,后来在网上搜索一番才知道,有些别有用心的人会对root账户密码进行暴力破解,从而破坏账户安全。密钥登录是一种不用密码的登录方式,这种方法相较于修改SSH端口和禁用root登录更为安全可靠。我这里就是改用密钥登录来加强账户安全的。

1. 前期准备

1.1 相关教程

Google搜索“SSH Key”会跳出很多教程,我这里综合参照设置 SSH 通过密钥登录ssh高级安全登录--开启密钥认证,禁用密码登录这两篇教程,感谢作者James Shih小子无名给我带来详细的教程。

2. 开启密钥登录VPS

2.0 登录VPS

和之前腾讯云以及搬瓦工两文中一致,在此不再赘述。

2.1 创建密钥对

用RSA加密方法生成密钥对

1
ssh-keygen -t rsa

提示密钥保存位置时,一般选择默认地址(

1
/root/.ssh/id_rsa

)即可。
提示输入passphrase时可以选择输入或直接留空,如果输入passphrase的话之后可以以密钥+passphrase的形式登录,而留空的话则可以实现只用密钥登录,ssh登录过程中可以不用输入密码了。我这里选择的就是留空。
输入完成后就会在

1
/root/.ssh/

目录下生成密钥id_rsa和公钥id_rsa.pub

2.2 安装公钥

1
/root/.ssh/

目录中安装公钥。

1
cat id_rsa.pub >>authorized_keys

安装完成后可以用指令

1
cat authorized_keys

来确认是否安装完成,如果顺利这时就可以看见authorized_keys中的公钥了。

2.3 下载密钥并更改格式

刚才直接生成的密钥并不能直接使用,先用WinSCP将id_rsa下载到本地,在PuTTYgen中打开:Action中选择Load an existing private key file,在全部文件中添加刚刚下载的id_rsa文件,提示加载成功后我们就可以Save private key来保存PuTTY适用的.ppk后缀名密钥文件。

Action中选择Load an existing private key file

Action中选择Load an existing private key file

成功加载id_rsa

成功加载id_rsa

保存PuTTY适用的.ppk后缀名密钥文件

保存PuTTY适用的.ppk后缀名密钥文件

2.4 开启密钥登录

打开

1
/etc/ssh/

目录下sshd_config文件
去掉其中Line 47和48前面的#注释符号

1
2
RSAAuthentication yes
PubkeyAuthentication yes

2.5 确认密钥可用性

退出并重新打开PuTTY后,在左侧分类中的Connection-SSH-Auth里Private key file for authentication选择之前保存的.ppk文件,回到Session中保存对话信息,点击Open确认登录,如果输入用户名“root”后登录成功的话则证明密钥可用。

选择.ppk文件

选择.ppk文件

2.6 关闭密码登录

同样打开

1
/etc/ssh/

目录下sshd_config文件,去掉其中Line 64前面的#注释符号并把yes改成no,禁止密码登录,其中Line 66中的yes也别忘了改成no

1
2
3
4
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
PasswordAuthentication no

最后,重启SSH服务。

1
/root/.ssh

目录下执行

1
service sshd restart

,提示OK后即可。

3. 后续完善

3.1 删除服务器端的密钥文件

删除目录

1
/root/.ssh/

下的id_rsa文件以确保万无一失,之后只能通过密钥进行SSH登录,务必保存好本地密钥。

4. 后记

最后再次感谢James Shih小子无名给我带来详细的教程,谢谢!

希望我的Linux学习能够坚持下去,在保障安全的同时开发出更多有趣的用法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注