一、设置免密登录

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

 看到这里所有的疑惑就都解开了,将这个小坑记录下来希望后来的同学能少走弯路。