由于一些集群需要(hadoop),或者是服务器之间传输文件方便需要进行服务器的免密钥配置。免密钥配置其实很简单,第一步生成一个密钥(公钥和私钥),第二步将自己的公钥放到需要进行免密钥登陆的服务器。就实现免密钥登陆了。
| hostname | ip |
| node1 | 10.134.11.101 |
| node2 | 10.134.11.102 |
| node3 | 10.134.11.103 |
| node4 | 10.134.11.104 |
| node5 | 10.134.11.105 |
一、生成密钥
#生成密钥,并指定目录,会在~/.ssh生成2个文件,id_dsa(私钥),id_dsa.pub(公钥)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa

id_dsa:代表私钥
id_dsa.pub:代表公钥
#对自己进行免密钥设置,自己访问自己不需要登录
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
#添加权限
chmod 600 ~/.ssh/authorized_keys
未执行上述命令前,ssh自己还需要密钥。

执行命令

退出进入的ssh使用exit命令,切记除非需要不要刻意多次ssh到其他服务器,容易导致使用着陷入循环,不知道当前在那一台服务器中。
二、将公钥放到需要免登陆服务器的认证文件中。
#将密钥传输到需要免登陆的服务器中,指定目录,我们放在/opt目录中了,可以随意指定。
#这里node1-5在hosts文件中进行配置IP了,如果没有配置,可以把node换成对应的IP
#集群之间免密钥,需要传到集群的每台节点中。
#将node1的公钥传到node2
scp -r ~/.ssh/id_dsa.pub root@node2:/opt/
#将node1的公钥传到node3
scp -r ~/.ssh/id_dsa.pub root@node3:/opt/
#将node1的公钥传到node4
scp -r ~/.ssh/id_dsa.pub root@node4:/opt/
#将node1的公钥传到node5
scp -r ~/.ssh/id_dsa.pub root@node5:/opt/
#将node1的公钥放入到当前节点的认证文件中。在node2,node3,node4,node5中使用。
cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
测试下node1是否可以免密钥登录到其他节点中

上述可以看出从node1到其他节点已经没有问题了,然后在node2,node3,node4,node5中 重复上述操作,就做到集群的免密钥了。
我这里因为平常需要频繁使用root用户进行操作,所以免密钥就做成root了,如果你的业务只需要hadoop或者其他用户,切到对应用户,执行上述操作也可以。
三、删除免密钥登陆
删除某个节点免密钥登陆,只需要在authorized_keys文件中,删除掉对应的公钥信息就可以了。
#进入认证文件,删除掉你不想让免密钥访问的节点就好了。
vim ~/.ssh/authorized_keys
