前言

使用 RSA 密钥认证可以实现免密码登录 SSH,禁止密码认证后还能避免密码被爆破,既方便又更安全。SSH 服务器默认禁止 root 使用密码认证登录,从这一点就可以看出使用密钥认证是有必要的。

添加 RSA 密钥实现免密码登录

1.生成RSA密钥对

ssh-keygen

出现下图的询问时,可以直接回车将密钥保存至默认的目录,也可以根据需求修改路径。

Snipaste_2023-10-10_20-07-31.png

出现下图的询问时,可以设置使用密钥的使用密码增加安全性,也可以直接回车跳过。需要注意的是,输入密码时并不会显示,确认后需要再次输入密码确认。

Snipaste_2023-10-10_20-08-12.png

创建成功后会输出密钥和公钥的保存位置

Snipaste_2023-10-10_20-12-04.png

2.安装公钥并配置SSH开启密钥认证支持

首先需要切换到公钥保存的目录

cd /root/.ssh/

安装公钥(读取公钥文件并输出内容到授权文件)

cat id_rsa.pub >> authorized_keys

设置授权文件权限(仅属主有读、写权限)

chmod 600 authorized_keys

设置 .ssh 目录权限(仅属主有读、写、执行权限)

chmod 700 /root/.ssh/

使用 nano 编辑 SSH 配置文件

nano /etc/ssh/sshd_config

查找 PubkeyAuthentication 配置项,取消注释,并将参数值修改为 yes,开启密钥认证支持。

查找 AuthorizedKeysFile 配置项,取消注释,并将参数值修改为授权文件的路径。

# 开启密钥认证支持
PubkeyAuthentication yes

# 指定授权文件
AuthorizedKeysFile .ssh/authorized_keys

Snipaste_2023-10-10_20-34-55.png

重启SSH服务,使配置修改生效

systemctl restart sshd

通过 WinSCP 连接服务器,文件协议为“SFTP”,下载私钥保存。

私钥所在目录:/root/.ssh/

私钥文件名称:id_rsa

删除服务器的密钥对文件

rm /root/.ssh/id_rsa
rm /root/.ssh/id_rsa.pub

SSH 注销登录,并使用密钥验证登录,测试是否成功。

logout

配置 SSH 禁止用户使用密码认证登录

1.编辑 SSH 配置文件

nano /etc/ssh/sshd_config

禁止使用密码认证分为两种,可以配置 root 用户仅允许使用密钥认证,也可以完全禁止使用密码认证登录SSH,第二种方法对所有用户生效;根据实际需求选择即可。

(1)配置 root 用户仅允许使用密钥认证

查找 PermitRootLogin 配置项,取消注释,并将参数值修改为 prohibit-password

# 配置 root 用户仅允许使用密钥认证
PermitRootLogin prohibit-password

(2)配置 SSH 服务器禁止使用密码认证登录

查找 PasswordAuthentication 配置项,取消注释,并将参数值修改为 no

# 禁止使用密码认证登录
PasswordAuthentication no

2.重启SSH服务,使配置修改生效。

systemctl restart sshd

3.注销登录

logout

注销后,使用密码认证登录测试是否失败(无法登录说明修改成功)

以后 root 用户要登录 SSH 只能使用密钥登录,切记要保存好密钥。

最后修改:2023 年 10 月 10 日
如果觉得我的文章对你有用,请随意赞赏