集羣中服務器數量較多時,各節點的密碼不相同之間不停切換,須要牢記各節點密碼並輸入密碼,就成了一件很痛苦的事了。本文講的SSH各服務器間無密碼登錄,就是解決這個問題的。node
本文,咱們須要實現node一、node二、node3之間不須要輸入密碼直接經過:算法
ssh node1或ssh 192.168.100.130直接登陸vim
各節點列表:服務器
node1 192.168.100.130
dom
node2 192.168.100.100ssh
node3 192.168.100.101 ide
實現過程:spa
首先實現node1無密碼登錄node2。orm
node1節點操做:it
一、在node1機器上生成公鑰/私鑰對
[root@node1 ~]# ssh-keygen -t rsa -P "
(注:-P表示密碼,-P '' 就表示空密碼,也能夠不用-P參數,這樣就要三車回車,用-P就一次回車。
它在/root下生成.ssh目錄,.ssh下有id_rsa和id_rsa.pub。)
2.把node1機下的id_rsa.pub複製到node2機下,在node2機的.ssh/authorized_keys文件裏,我用scp複製。
[root@node1 ~]# scp .ssh/id_rsa.pub root@192.168.100.100:/root
root@192.168.100.100's password:
id_rsa.pub 100% 392 0.4KB/s 00:00
因爲尚未免密碼登陸的,因此要輸入密碼。
node2節點操做:
3.node2機把從node1機複製的id_rsa.pub添加到.ssh/authorzied_keys文件裏。
[root@node2 ~]# cat id_rsa.pub >> .ssh/authorized_keys
[root@node2 ~]# chmod 600 .ssh/authorized_keys
(注:authorized_keys的權限要是600。)
再添加機器,就是不停的重複第2步和第3步操做。
大功告成!!!
擴展:主機名登陸
一、經過修改hosts文件能夠實現經過主機名登陸
[root@node1 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.130 node1
192.168.100.100 node2
192.168.100.101 node3
二、使用scp複製hosts文件到各各節點。
[root@node1 ~]# scp /etc/hosts root@192.168.100.100:/etc/
hosts 100% 226 0.2KB/s 00:00
[root@node1 ~]# scp /etc/hosts root@192.168.100.101:/etc/
hosts 100% 226 0.2KB/s 00:00
結果演示:
[root@node1 ~]# ssh node2
Last login: Tue Mar 3 17:42:18 2015 from node1
[root@node2 ~]# ssh node3
Last login: Thu Dec 18 17:14:29 2014 from 192.168.100.130
[root@node3 ~]#
總結:
登陸的機子可有私鑰,被登陸的機子要有登陸機子的公鑰。這個公鑰/私鑰對通常在私鑰宿主機產生。上面是用rsa算法的公鑰/私鑰對,固然也能夠用dsa(對應的文件是id_dsa,id_dsa.pub)
想讓node1,node2機無密碼互登陸,那node2機以上面一樣的方式配置便可。