在4台服务器-SSH免密登录设置,如以下4台服务器
master1 node001 node002 node003
我想在master1对4台服务器进行拉取或者分发任务或者是集群服务器的批量操作,但是每次都要输出密码,这个过程比较影响操作效率???
以下给出解决方法---->设置密钥验证
密钥验证流程如图
原理:
即在源服务器上先生成一份公钥和一份密钥,将公钥复制到目标服务器,利用命令将公钥添加至目标服务器的授权列表(authorized_keys)。当有服务器带着公钥申请连接服务器时,目标服务器首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证;
设置步骤:
1.在master1生成RSA公钥和私钥
输入ssh-keygen -t rsa,然后用默认配置,一直按Enter键;
2.进入生成密钥所在的文件目录
cd /root/.ssh/
3.将公钥(名为id_rsa.pub文件)追加到认证文件(名为authorized_keys文件),先后执行以下指令
注意:这里我用的是服务器内网IP
(1)ssh-copy-id master1的IP
(2)ssh-copy-id node001的IP
(3)ssh-copy-id node002的IP
(4)ssh-copy-id node003的IP
4.验证完成,进入目标服务器的 /root/.ssh 文件夹中查看授权列表authorized_keys发现原服务器的公钥已经添加进去
5.如果不成功就注意检车这两项:
(1)解析主机名cat /hostname
(2)修改配置ssh_config
cd /etc/ssh
RSAAuthentication yes将这一行的注释取消掉