ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例。
有机器hadoop1(192.168.1.191),hadoop2(192.168.1.192)。现想A通过ssh免密码登录到B。
我是这样做的,现在机器A上做免密码登录,即在Hadoop1上能够免密码登录自己(ssh Hadoop1)
1.在hadoop1下生成公钥/私钥对,使用如下
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/root下生成.ssh目录,.ssh下有id_dsa和id_dsa.pub。
2.把hadoop1机下的/root/.ssh/id_dsa.pub复制/root/.ssh/authorized_keys文件里,我用scp复制。
id_dsa.pub 100% 223 0.2KB/s 00:00
3.然后免密码登录hadoop1
[root@hadoop1 ~]# ssh hadoop1
Last login: Fri Nov 13 22:53:23 2015 from hadoop1
4.如果要免密码登录hadoop2,可以将hadoop1下/root/.ssh拷贝到hadoop2的/root下面
[root@hadoop1 ~]#scp -r /root/.ssh root@hadoop2:~/
5.然后就可以免密码登录到hadoop2了,第一次可能还是要输入密码
[root@hadoop1 ~]# ssh hadoop2
Last login: Fri Nov 13 22:53:23 2015 from hadoop2
小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)
想让A,B机无密码互登录,那B机以上面同样的方式配置即可。