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)配置免登入前,請確保網路環境達到要求(後續內容有詳細說明)
- (2)免登入其實是在本機生成兩把鎖,一把所謂的公鑰是放到要登入的那臺伺服器上的,其實是一串文字。
- (3)被登入的伺服器上只會有一個公鑰檔案,叫authorized_keys。如果被登入的伺服器有多個客戶端要連上來,就會把每個文字金鑰存成一行。
- (4)客戶端傳送到伺服器端的金鑰檔案一定要放到登入使用者主目錄的~/.ssh這個隱藏目錄下,
- 比如用hadoop使用者登入到192.168.102.248伺服器,如果hadoop的主目錄是/home/hadoop,那麼,金鑰檔案一定是在/home/hadoop/.ssh/下
- (5)如果直接將authorized_keys的檔案從客戶端通過scp或者ssh-copy-id方式傳送到伺服器端,會覆蓋原來的檔案,對其他使用者有影響,所以傳送時要進行改名後合併,
準備工作
1、修改/etc/hosts的伺服器ip對映(每臺伺服器都要做ip對映)
- 192.168.153.129 hadoop1
- 192.168.153.130 hadoop2
- 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. 登入到要被登入的伺服器()進入./ssh目錄
- cd root/.ssh
- 2. 將客戶端傳送來的公鑰檔案進行合併
- cat authorized_keys_from_hadoop1 >> authorized_keys
- 說明:如果authorized_keys不存在就會自動建立,如果存在就會追加
5、驗證
- 配置免登入完成後,在本機中輸入“ssh [email protected]” 或者 “ssh [email protected]” 。
- * 如果無需輸入密碼,則表示配置免登入成功。
- * 如果仍需要輸入密碼,則可能是.ssh目錄和檔案許可權需要修改。