SSH免密登录

环境:4台Linux RedHat 6.4 机器(192.168.1.126、192.168.1.127、192.168.1.128、192.168.1.130),

           配置各台机器hadoop 用户的免密认证登陆,建立相互信任关系

1. 基础准备

  •        4台机器分别:清空用户家目录/home/hadoop/下的.ssh文件夹(有其他重要文件可先行查看备份)

SSH免密登录_第1张图片

  • 关闭防火墙 + 优化SELinux 

 https://blog.csdn.net/daoxu_hjl/article/details/85642931

2. 生成密钥文件

  4台机器分别操作一次:

ssh-keygen -t rsa

SSH免密登录_第2张图片

说明:ssh-keygen -t [rsa|dsa],将会生成私钥文件和公钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub; -t 用来指定加密方式,若不指定,默认rsa,建议使用rsa

 

3. 交出公钥,建立单向信任关系

   A机器若要免密访问B机器,则B机器中一定要存在A机器的公钥:即/home/hadoop/.ssh/authorized_keys中存在A机器id_rsa.pub文件的内容

   127,128,130机器分别交出自己的公钥给126:

   

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

若B机器不存在.ssh文件夹或authorized_keys文件,则会自动创建对应目录或文件;若已存在则将A的公钥附加到authorized_keys文件中(不会覆盖原内容))

SSH免密登录_第3张图片

 

查看126的authorized_keys 可以发现存在其他3台机器的公钥文件内容

 

然后在126上,将126自身的公钥文件内容也附加到authorized_keys,建立与本身的免密关系:

cat id_rsa.pub  >> authorized_keys

SSH免密登录_第4张图片

 

注:也可以通过scp或手动创建复制 生成authorized_keys文件及其包含的公钥内容

4. 共享authorized_keys文件到各台机器,建立双向信任关系

   将126上包含所有机器公钥的authorized_keys文件分发到其他机器~./.ssh/目录下

scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/

 

SSH免密登录_第5张图片

 

注:1. 也可以通过NFS方式共享服务端的authorized_keys文件 --> 便于修改:

(NFS文件共享参考:https://blog.csdn.net/daoxu_hjl/article/details/85416475)

      授权文件放入共享目录: mv authorized_keys /opt/share

      各节点机器分别创建 ~/.ssh/ 下授权文件的软链接文件: ln -s /opt/nfs_share/authorized_keys ~/.ssh/authorized_keys

      只能本用户具有对密钥文件的写权限,必须修改权限: chmod 644 ~/.ssh/authorized_keys

     ps: 若修改权限失败,则需要查看共享目录映射的属主是否正确(可能NFS客户端用户与服务的用户的uid&gid不一致,nfs根据id映射权限)

     

      2.  免密码后可能依然有一个提示性验证,需要手动输入yes  --> 影响后续程序间的交互

vim /etc/ssh/ssh_config 

# 在/etc/ssh/ssh_config 文件末尾添加:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

 

3. 配置后依然无法生效: 文件或文件夹权限问题

文件权限: chmod 600 ~/.ssh/*

文件夹权限: chmod 700 ~/.ssh 

(如果依然不行,将.ssh的上级目录也设置700权限)

具体报错可以查看日志:tail -30 /var/log/secure

 

你可能感兴趣的:(SSH免密登录)