關於hadoop ssh免密碼登錄
今天在學習hadoop的時候碰到一個想不通的問題,就是免登錄的原理以及配置,下面給大家分享下我的理解
1 主服務器:
修改主機名,並且加入本機的主機名和從服務器的主機名的host解析
[root@hadoop ~]# more /etc/hosts
127.0.0.1 localhost.localdomain localhost localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
masterip hadoop.master //masterip主服務器IP
slaveip hadoop.slave //slaveip從服務器IP
[root@hadoop ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop.master
reboot重啟系統
從服務器:
修改主機名,並且加入本機的主機名和從服務器的主機名的host解析
[root@hadoop ~]# more /etc/hosts
127.0.0.1 localhost.localdomain localhost localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
masterip hadoop.master //masterip主服務器IP
slaveip hadoop.slave //slaveip從服務器IP
[root@hadoop ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop.slave
reboot重啟從服務器
ssh測試
主服務器用命令
ssh [email protected]測試,如果有提示輸入密碼,表明能解析到從服務器的主機名,如果沒有安裝ssh,可以用命令
yum list | grep ssh先查看ssh client的版本,
然後用命令yum -y install openssh-clients-5.3p1-123.el6_9.x86_64安裝對應版本的ssh clients
2主服務器配置公鑰和密鑰用於免密碼登錄
主服務器
[root@hadoop ~]#ssh-keygen -t rsa
摁下回車之後會有一堆提示,接著敲回車知道完成就可以了,最後會屏幕會顯示一堆指紋之類的東西
id_rsa是私鑰,id_rsa.pub是公鑰,將生成的公鑰復制到authorized_keys中,authorized_keys用於認證
[root@hadoop ~]#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
復制公鑰到從服務器,替換掉從服務器的認證文件
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
!註意這裏復制一定建議用ssh-copy-id來復制公鑰,我之前試過用scp來復制,結果發覺服務器重啟之後再次連接要輸入密碼
第一次連接從服務器
ssh hadoop.slave
The authenticity of host ‘hadoop.slave (210.72.3.225)‘ can‘t be established.
RSA key fingerprint is 5e:84:cf:22:61:2c:e7:f3:69:1d:92:fe:a8:65:95:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘hadoop.slave,210.72.3.225‘ (RSA) to the list of known hosts.
Last login: Fri May 11 16:00:41 2018 from hadoop.slave
發覺已經不用輸入密碼就可以登錄了
接下來說下這個公鑰私鑰解密的過程:
1主服務器向從服務器發送連接請求
2從服務器收到請求之後,在authorized_key中查找,authorized_key裏面存放的是主服務器的公鑰,那麽會用主服務器的公鑰進行加密,並且將其發送給主服務器
3主服務器收到加密信息後,用自己的私鑰對其進行解密,將解密的數字發送給從服務器
4由於從服務器存放的是主服務器對應的公鑰,因此和主服務器的解密的字符串一定是想吻合的,這樣子就實現了免密碼登錄
這就是為什麽公鑰要用來加密,而只有私鑰能用來解密,從服務器得到了公鑰只要將其加密的功能,而主服務器有對應的私鑰,所以只有主服務器才有解密驗證的功能
關於hadoop ssh免密碼登錄