1. 程式人生 > >centos 7 ssh免密碼登入(補充1.6 SSH免密登入)

centos 7 ssh免密碼登入(補充1.6 SSH免密登入)

參考(十分詳細):http://blog.csdn.net/newstruts/article/details/46424191

目的

在搭建Linux叢集服務的時候,主伺服器需要啟動從伺服器的服務,如果通過手動啟動,叢集內伺服器幾臺還好,要是像阿里1000臺的雲梯hadoop叢集的話,軌跡啟動一次叢集就得幾個工程師一兩天時間,是不是很恐怖。如果使用免密登入,主伺服器就能通過程式執行啟動腳步,自動幫我們將從伺服器的應用啟動。而這一切就是建立在ssh服務的免密碼登入之上的。所以要學習叢集部署,就必須瞭解linux的免密碼登入。

原理

     使用一種被稱為"公私鑰"認證的方式來進行ssh登入. "公私鑰"認證方式簡單的解釋是

首先在客戶端上建立一對公私鑰 (公鑰檔案:~/.ssh/id_rsa.pub; 私鑰檔案:~/.ssh/id_rsa)

然後把公鑰放到伺服器上(~/.ssh/authorized_keys), 自己保留好私鑰

當ssh登入時,ssh程式會發送私鑰去和伺服器上的公鑰做匹配.如果匹配成功就可以登入了


新手必讀

  1. 1)配置免登入前,請確保網路環境達到要求(後續內容有詳細說明)  
  2. 2)免登入其實是在本機生成兩把鎖,一把所謂的公鑰是放到要登入的那臺伺服器上的,其實是一串文字。  
  3. 3)被登入的伺服器上只會有一個公鑰檔案,叫authorized_keys。如果被登入的伺服器有多個客戶端要連上來,就會把每個文字金鑰存成一行。  
  4. 4)客戶端傳送到伺服器端的金鑰檔案一定要放到登入使用者主目錄的~/.ssh這個隱藏目錄下,  
  5. 比如用hadoop使用者登入到192.168.102.248伺服器,如果hadoop的主目錄是/home/hadoop,那麼,金鑰檔案一定是在/home/hadoop/.ssh/下  
  6. 5)如果直接將authorized_keys的檔案從客戶端通過scp或者ssh-copy-id方式傳送到伺服器端,會覆蓋原來的檔案,對其他使用者有影響,所以傳送時要進行改名後合併,

準備工作

1、修改/etc/hosts的伺服器ip對映(每臺伺服器都要做ip對映)


  
  1. 192.168.153.129 hadoop1
  2. 192.168.153.130 hadoop2
  3. 192.168.153.136 hadoop3

修改後,最好重啟下伺服器,然後伺服器名稱應該也會變成[email protected]


2、生成rsa公私鑰

比如在hadoop1機器上生成公私鑰

注:必須在使用者目錄下的.ssh資料夾下生成公私金鑰

這裡都是用root使用者做ssh免密登入,所以對應路徑是/root/.ssh

cd /root/.ssh
  

執行以下命令後,如果提示,就一直按“Enter”鍵,直至生成公鑰

ssh-keygen -t rsa
  

執行完成後會生成兩個檔案id_rsa、id_rsa.pub

3、把公鑰複製到需要免密登入的伺服器hadoop2

id_rsa.pub檔案就是公鑰,執行命令複製到hadoop2

scp id_rsa.pub [email protected]:/root/.ssh/authorized_keys_from_hadoop1
  

hadoop2上/root/.ssh/authorized_keys_from_hadoop1檔案的內容就是id_rsa.pub的內容


4、把hadoop1的公鑰內容進行公鑰合併


  
  1. 1. 登入到要被登入的伺服器()進入./ssh目錄
  2. cd root/.ssh
  3. 2. 將客戶端傳送來的公鑰檔案進行合併
  4. cat authorized_keys_from_hadoop1 >> authorized_keys
  5. 說明:如果authorized_keys不存在就會自動建立,如果存在就會追加

5、驗證


  
  1. 配置免登入完成後,在本機中輸入“ssh [email protected]” 或者 “ssh [email protected]” 。
  2. * 如果無需輸入密碼,則表示配置免登入成功。
  3. * 如果仍需要輸入密碼,則可能是.ssh目錄和檔案許可權需要修改。