说明
为了方便地管理集群,不管是Hadoop、Storm、Spark,还是Kafka等各类分布式框架的集群,几乎都需要配置SSH免密码登录,且在集群搭建过程中几乎都是第一步,本文也不例外,介绍下How-to.
本文集群三台机器,/etc/hosts文件内容如下:
172.23.8.144 slave1
172.23.8.179 slave2
172.23.8.59 slave3
配置步骤
- 生成公钥/私钥对
[root@slave1 ~]# ssh-keygen -t rsa
连续回车即可。解释:ssh-keygen用来生成公钥/私钥对,-t表示生成秘钥对使用的算法类型。可选的值有rsa1(rsa的第一版)、dsa、ecdsa、ed25519,rsa(协议第2版),本文选择rsa。连续回车后在~路径下生成.ssh目录,目录下生成id_rsa和id_rsa.pub.在另外两台机器同样执行该命令。
2. 把slave1、slave2下的id_rsa.pub复制到slave3机器下的.ssh/目录里。
[root@slave1 .ssh]# scp id_rsa.pub root@slave3:~/.ssh/1.id_rsa.pub
[root@slave2 .ssh]# scp id_rsa.pub root@slave3:~/.ssh/2.id_rsa.pub
由于还没有配置免密码登录,所以要输入密码,完成后在slave3的.ssh目录下有1. id_rsa.pub、2.id_rsa.pub、id_rsa.pub和id_rsa。
3. 把从slave1、slave2复制的id_rsa.pub添加到slave3机器下~/.ssh/authorzied_keys文件里。
[root@slave3 .ssh]#cat *.pub >>authorized_keys
查看authorized_keys文件会看到3个pub文件的内容都在里面。
4. 将authorized_keys分发到slave1和slave2上。
[root@slave3 .ssh]#scp authorized_keys root@slave1:~/.ssh/
[root@slave3 .ssh]#scp authorized_keys root@slave2:~/.ssh/
至此,ssh免登陆配置完毕。
5. 验证
[root@slave3 .ssh]# ssh slave1
Last login: Sat Jun 4 12:26:44 2016 from slave1
出现以上内容说明配置成功。
6. 总结
登录机器有私钥id_rsa,被登录目的机器有登录机器的公钥id_rsa.pub。公钥/私钥对在私钥宿主机产生,将公钥分发至目的机器上。因此如果让机器之间互相免密码登录,那其他机器以同样的方式配置即可,把公钥复制过去追加authorized_keys文件末尾。