一、设置免密登录
1、在~/.ssh目录下生成一对密匙
cd ~/.ssh
ssh-keygen -t rsa
输入该命令后会有提示,一直回车即可
2、将公共密匙保存到authorized_keys文件中,实现对自身免密码登录
cat id_rsa.pub >> authorized_keys
3、修改权限(需要修改~/.ssh文件夹和authorized_keys文件的,不然会报不允许的错误或者无法出现know_hosts文件)
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
4、修改SSH配置文件——“etc/ssh/sshd_config”
PermitRootLogin yes # 允许root认证登录
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件相同)
5、重启SSH
systemctl restart sshd
二、两台主机互相免密登录
1、将a的公共密匙发送给b
scp ~/.ssh/id_rsa.pub y@b:~/
2、b将其密匙存放到自己的authorized_keys文件中
.pub >> ~/.ssh/authorized_keys
3、修改B服务器SSH配置文件——“etc/ssh/sshd_config”
PermitRootLogin yes # 允许root认证登录
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件相同)
5、重启SSH
systemctl restart sshd
这样两台机器就可以互相免密登录了
三、部分主机设置后无法生效问题定位
1、检查AuthorizedKeysFile配置是否启用authorized_keys
cat /etc/ssh/sshd_config |egrep AuthorizedKeysFile
AuthorizedKeysFile .ssh/authorized_keys
2、查看系统安全日志,定位问题
cat /var/log/secure 查看系统的安全日志
报错信息:Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys
原因 sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
用户目录权限为 755 或者 700,就是不能是77x。
.ssh目录权限一般为755或者700。
rsa_id.pub 及authorized_keys权限一般为644
rsa_id权限必须为600
解决方法
检测目录权限,把不符合要求的按要求设置权限即可。
报错信息:reprocess config line 43: Deprecated option RSAAuthentication
CentOS7.4相对于之前版本,做了一些与sshd相关的安全更新来加强sshd的安全性。其中之一就是弃用RSAAuthentication支持。从CentOS7.3升级上来的用户会在升级时被告知这一变化。
RSAAuthentication (rsa认证)是只支持第1代ssh通讯协议使用的配置项,在CentOS7.4中被废除了,而且前面提到过CentOS7开始预设使用第二代通讯协议,在CentOS7.4中没有找到指定协议版本的配置行,个人猜测是CentOS7.4全面抛弃第1代协议。 第2代ssh通讯协议的密钥验证选项是
#PubkeyAuthentication yes
这个选项默认是注释掉的,并且是默认开启的,因此我们在使用第二代ssh通讯协议时不需要再去纠结 RSAAuthentication 选项了,在CentOS7.4中其强行添加 RSAAuthentication 配置会触发系统对它的废除提示。
reprocess config line 38: Deprecated option RSAAuthentication
看到这里所有的疑惑就都解开了,将这个小坑记录下来希望后来的同学能少走弯路。