SSH無需密碼密鑰登錄

SSH無需密碼密鑰登錄

摘錄一

在192.168.42.142機器上

1)運行:ssh-keygen -t rsa

2)然後拍兩下回車(均選擇默認)

3)運行: 

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

或普通用戶:

ssh-copy-id NAME@IP

4)再輸入163機器上的root密碼

此時,再ssh 到163機器,則不需要密碼了。相互之間scp,也不需要密碼


摘錄二
配置 ssh 實現 MPI 節點間用戶的無密碼訪問,由於 MPI 並行程序需要在各節點間進行信息傳遞,所以必須實現所有節點兩兩之間能無密碼訪問。
節點間的無密碼訪問是通過配置ssh 公鑰認證來實現的。例如,對新用戶 user 配置 ssh 公鑰認證,先在 c1 上做以下操作。
(1)生成了私鑰 id_dsa 和公鑰 id_dsa.pub,具體操作方法如下。
ssh-keygen -t rsa
   系統顯示一些信息,遇到系統詢問直接回車即可。
(2)將該密鑰用作認證,進行訪問授權。按如下命令在 c1 執行。
cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
   由於我們使用的是 root 用戶,所以~代表/root,
(3)將~/.ssh 目錄下的文件複製到所有節點。
scp -r ~/.ssh/* c2:/root/.ssh
(4)檢查是否可以直接(不需要密碼)登錄其他節點。
ssh c2
   如能兩兩之間不需要密碼登錄其他節點,則表明配置成功。



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

2、SSH無密碼驗證配置

  Hadoop運行過程中需要管理遠端Hadoop守護進程,在Hadoop啓動以後,NameNode是通過SSH(Secure Shell)來啓動和停止各個DataNode上的各種守護進程的。這就必須在節點之間執行指令的時候是不需要輸入密碼的形式,故我們需要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登錄並啓動DataName進程,同樣原理,DataNode上也能使用SSH無密碼登錄到NameNode。

 

2.1 安裝和啓動SSH協議

  在"Hadoop集羣(第1期)"安裝CentOS6.0時,我們選擇了一些基本安裝包,所以我們需要兩個服務:ssh和rsync已經安裝了。可以通過下面命令查看結果顯示如下:

 

rpm –qa | grep openssh

rpm –qa | grep rsync

 

 

  假設沒有安裝ssh和rsync,可以通過下面命令進行安裝。

 

yum install ssh 安裝SSH協議

yum install rsync (rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件)

service sshd restart 啓動服務

 

  確保所有的服務器都安裝,上面命令執行完畢,各臺機器之間可以通過密碼驗證相互登。

 

2.2 配置Master無密碼登錄所有Salve

  1)SSH無密碼原理

  Master(NameNode | JobTracker)作爲客戶端,要實現無密碼公鑰認證,連接到服務器Salve(DataNode | Tasktracker)上時,需要在Master上生成一個密鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Slave上。當Master通過SSH連接Salve時,Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Slave,Slave確認解密數無誤之後就允許Master進行連接了。這就是一個公鑰認證過程,其間不需要用戶手工輸入密碼。重要過程是將客戶端Master複製到Slave上。

  2)Master機器上生成密碼對

   在Master節點上執行以下命令:

 

ssh-keygen –t rsa –P ''

 

  這條命是生成其無密碼密鑰對,詢問其保存路徑時直接回車採用默認路徑。生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/home/hadoop/.ssh"目錄下。

 

 

  查看"/home/hadoop/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個剛生產的無密碼密鑰對。

 

 

  接着在Master節點上做如下配置,把id_rsa.pub追加到授權的key裏面去。

 

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

 

  在驗證前,需要做兩件事兒。第一件事兒是修改文件"authorized_keys"權限(權限的設置非常重要,因爲不安全的設置安全設置,會讓你不能使用RSA功能),另一件事兒是用root用戶設置"/etc/ssh/sshd_config"的內容。使其無密碼登錄有效。

  1)修改文件"authorized_keys"

    

chmod 600 ~/.ssh/authorized_keys

 

   

   備註:如果不進行設置,在驗證時,扔提示你輸入密碼,在這裏花費了將近半天時間來查找原因。在網上查到了幾篇不錯的文章,把作爲"Hadoop集羣_第5期副刊_JDK和SSH無密碼配置"來幫助額外學習之用。

 

    2)設置SSH配置

  用root用戶登錄服務器修改SSH配置文件"/etc/ssh/sshd_config"的下列內容。

 

 

RSAAuthentication yes # 啓用 RSA 認證

PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式

AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

 

  設置完之後記得重啓SSH服務,才能使剛纔設置有效。

 

service sshd restart

    

  退出root登錄,使用hadoop普通用戶驗證是否成功。

 

ssh localhost

 

   

  從上圖中得知無密碼登錄本級已經設置完畢,接下來的事兒是把公鑰複製所有Slave機器上。使用下面的命令格式進行復制公鑰:

 

scp ~/.ssh/id_rsa.pub 遠程用戶名@遠程服務器IP:~/

 

  例如:

 

scp ~/.ssh/id_rsa.pub [email protected]:~/

 

  上面的命令是複製文件"id_rsa.pub"到服務器IP爲"192.168.1.3"的用戶爲"hadoop"的"/home/hadoop/"下面。

 

  下面就針對IP爲"192.168.1.3"的Slave1.Hadoop的節點進行配置。

  1)把Master.Hadoop上的公鑰複製到Slave1.Hadoop上

 

 

 

  從上圖中我們得知,已經把文件"id_rsa.pub"傳過去了,因爲並沒有建立起無密碼連接,所以在連接時,仍然要提示輸入輸入Slave1.Hadoop服務器用戶hadoop的密碼。爲了確保確實已經把文件傳過去了,用SecureCRT登錄Slave1.Hadoop:192.168.1.3服務器,查看"/home/hadoop/"下是否存在這個文件。

 

 

  從上面得知我們已經成功把公鑰複製過去了。

  2)在"/home/hadoop/"下創建".ssh"文件夾

  這一步並不是必須的,如果在Slave1.Hadoop的"/home/hadoop"已經存在就不需要創建了,因爲我們之前並沒有對Slave機器做過無密碼登錄配置,所以該文件是不存在的。用下面命令進行創建。(備註:用hadoop登錄系統,如果不涉及系統文件修改,一般情況下都是用我們之前建立的普通用戶hadoop進行執行命令。)

 

mkdir ~/.ssh

 

  然後是修改文件夾".ssh"的用戶權限,把他的權限修改爲"700",用下面命令執行:

 

chmod 700 ~/.ssh

 

  備註:如果不進行,即使你按照前面的操作設置了"authorized_keys"權限,並配置了"/etc/ssh/sshd_config",還重啓了sshd服務,在Master能用"ssh localhost"進行無密碼登錄,但是對Slave1.Hadoop進行登錄仍然需要輸入密碼,就是因爲".ssh"文件夾的權限設置不對。這個文件夾".ssh"在配置SSH無密碼登錄時系統自動生成時,權限自動爲"700",如果是自己手動創建,它的組權限和其他權限都有,這樣就會導致RSA無密碼遠程登錄失敗。

 

 

  對比上面兩張圖,發現文件夾".ssh"權限已經變了。

  3)追加到授權文件"authorized_keys"

  到目前爲止Master.Hadoop的公鑰也有了,文件夾".ssh"也有了,且權限也修改了。這一步就是把Master.Hadoop的公鑰追加到Slave1.Hadoop的授權文件"authorized_keys"中去。使用下面命令進行追加並修改"authorized_keys"文件權限:

 

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

 

  4)用root用戶修改"/etc/ssh/sshd_config"

  具體步驟參考前面Master.Hadoop的"設置SSH配置",具體分爲兩步:第1是修改配置文件;第2是重啓SSH服務。

  5)用Master.Hadoop使用SSH無密碼登錄Slave1.Hadoop

  當前面的步驟設置完畢,就可以使用下面命令格式進行SSH無密碼登錄了。

 

ssh 遠程服務器IP

 

 

  從上圖我們主要3個地方,第1個就是SSH無密碼登錄命令,第2、3個就是登錄前後"@"後面的機器名變了,由"Master"變爲了"Slave1",這就說明我們已經成功實現了SSH無密碼登錄了。

  最後記得把"/home/hadoop/"目錄下的"id_rsa.pub"文件刪除掉。

 

rm –r ~/id_rsa.pub

 

 

  到此爲止,我們經過前5步已經實現了從"Master.Hadoop"到"Slave1.Hadoop"SSH無密碼登錄,下面就是重複上面的步驟把剩餘的兩臺(Slave2.Hadoop和Slave3.Hadoop)Slave服務器進行配置。這樣,我們就完成了"配置Master無密碼登錄所有的Slave服務器"。

 

2.3 配置所有Slave無密碼登錄Master

  和Master無密碼登錄所有Slave原理一樣,就是把Slave的公鑰追加到Master的".ssh"文件夾下的"authorized_keys"中,記得是追加(>>)

  爲了說明情況,我們現在就以"Slave1.Hadoop"無密碼登錄"Master.Hadoop"爲例,進行一遍操作,也算是鞏固一下前面所學知識,剩餘的"Slave2.Hadoop"和"Slave3.Hadoop"就按照這個示例進行就可以了。

  首先創建"Slave1.Hadoop"自己的公鑰和私鑰,並把自己的公鑰追加到"authorized_keys"文件中。用到的命令如下:

 

ssh-keygen –t rsa –P ''

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

 

  接着是用命令"scp"複製"Slave1.Hadoop"的公鑰"id_rsa.pub"到"Master.Hadoop"的"/home/hadoop/"目錄下,並追加到"Master.Hadoop"的"authorized_keys"中。

  1)在"Slave1.Hadoop"服務器的操作

  用到的命令如下:

 

scp ~/.ssh/id_rsa.pub     [email protected]:~/

 

  

  2)在"Master.Hadoop"服務器的操作

  用到的命令如下:

 

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

 

 

  然後刪除掉剛纔複製過來的"id_rsa.pub"文件。

 

    

  最後是測試從"Slave1.Hadoop"到"Master.Hadoop"無密碼登錄。

 

 

  從上面結果中可以看到已經成功實現了,再試下從"Master.Hadoop"到"Slave1.Hadoop"無密碼登錄。

 

 

  至此"Master.Hadoop"與"Slave1.Hadoop"之間可以互相無密碼登錄了,剩下的就是按照上面的步驟把剩餘的"Slave2.Hadoop"和"Slave3.Hadoop"與"Master.Hadoop"之間建立起無密碼登錄。這樣,Master能無密碼驗證登錄每個Slave,每個Slave也能無密碼驗證登錄到Master。

原文地址:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章