1. 程式人生 > >關於hadoop ssh免密碼登錄

關於hadoop ssh免密碼登錄

分享 pri per fig known config x86 can 字符串

今天在學習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免密碼登錄