前言
使用 RSA 密钥认证可以实现免密码登录 SSH,禁止密码认证后还能避免密码被爆破,既方便又更安全。SSH 服务器默认禁止 root 使用密码认证登录,从这一点就可以看出使用密钥认证是有必要的。
添加 RSA 密钥实现免密码登录
1.生成RSA密钥对
ssh-keygen
出现下图的询问时,可以直接回车将密钥保存至默认的目录,也可以根据需求修改路径。
出现下图的询问时,可以设置使用密钥的使用密码增加安全性,也可以直接回车跳过。需要注意的是,输入密码时并不会显示,确认后需要再次输入密码确认。
创建成功后会输出密钥和公钥的保存位置
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
重启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 只能使用密钥登录,切记要保存好密钥。