一. 简单介绍
一般使用scp远程拷贝操作时,需要输入目标服务器的用户名和密码,这个时候可以做linux服务器之间ssh互信配置, 这样在多个linux服务器之间做操作时就可以免密登陆。
ssh互信配置的原理简单来说,就是各自服务器存放了目标主机的证书,当执行登陆时,自动完成认证,从而不需要再输入任何密码。
二. 配置过程
具体步骤:
1. 登陆服务器1
2. 建立ssh相关目录: mkdir ~/.ssh
3. 设置ssh的权限: chmod 700 ~/.ssh
4. 生成RSA公钥: ssh-keygen -t rsa (请一直回车,直至提示结束)
5. 将公钥(名为id_rsa.pub文件)追加到认证文件(名为authorized_keys文件)中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
6. 设置认证文件的权限:
chmod 600 ~/.ssh/authorized_keys
7. 服务器1的配置完成, 在其他服务器上执行step1~6相同的操作。
8. 执行多个服务器之间的公钥信息的追加copy,把所有节点的id_rsa.pub 公钥信息追加到一个文件中(authorized_keys),然后copy到所有的linux服务器上替换认证文件。
9. 在多个节点间验证ssh免密登陆配置是否生效。
如果在多个节点间验证ssh免密登陆有问题,有可能是公钥信息没有copy完整,可以重新执行下以上copy覆盖步骤,再次验证。
三. 互信失败原因
多数情况下,可以登录成功。但是也会出现配置不正确,导致失败的时候。
1.检查authorized_keys文件权限,并设置为700
chmod 700 authorized_keys
2.检查/etc/ssh/sshd_config文件
将 #StrictModes yes 设置为 StrictModes no 将 #AuthorizedKeysFile .ssh/authorized_keys 设置为 AuthorizedKeysFile .ssh/authorized_keys
3.删除/root/.ssh/known_hosts文件
4.重启ssh:service sshd restart
登陆目标机器,查看sshd的日志信息。日志信息目录为,vi /var/log/secure你会发现如下字样的日志信息。Jul 22 14:20:33 v138020.go sshd[4917]:
Authentication refused: bad ownership or modes for directory /home
原因二:文件权限配置问题
sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
用户目录权限为 755 或者 700,就是不能是77x。 .ssh目录权限一般为755或者700。 rsa_id.pub 及authorized_keys权限一般为644 rsa_id权限必须为600 chmod 755 hebei/ chmod 755 .ssh chmod 644 id_rsa.pub authorized_keys chmod 600 id_rsa