1. 程式人生 > >centos 7 系統下進行多伺服器的SSH免密碼登入配置

centos 7 系統下進行多伺服器的SSH免密碼登入配置

學習ssh配置的目的就是為學習hadoop做鋪墊。因為在進行hadoop完全分散式的大資料處理,需要用到客戶端與各個伺服器之間進行面密碼登陸並配合來完成資料處理。

基於此,我就在網上搜索了幾篇文章,嘗試著去配置。“好事多磨”,從開始配置到我真正的配置成功,還是今天上午的事情。從前天到今天,兩天半時間。經歷了無數次的虛擬機器中centos7系統的安裝、測試。然後我就把我走過的曲折歷程講述一哈:

為什麼使用ssh?

比如在進行大型的叢集管理時候,可以避免繁瑣的密碼驗證。這樣,通過配置ssh,不僅可以保證各個節點(伺服器)之間通訊的安全性,而且不用頻繁輸入密碼,提高管理效率;注意:我現在所說的是ssh的單向驗證登陸,而非雙向的。也就是說只能進行 master->slave1 、master->slave2 、 master->slaveX ,但是不能出現 slaveX->master or slaveX->slaveX' 的情況。除非,進行了金鑰對的雙向驗證。

配置ssh的詳細流程

本機系統是Windows 10 虛擬機器是VMware 8
Linux系統環境是CentOS-7-x86_64-DVD-1708.iso
在這裡我就在虛擬機器上創建出3臺虛擬伺服器. 主機名分別是:h147、h148 和 h149 軟體選擇的是:基礎設施伺服器 三臺伺服器的管理員統一使用者名稱:hadoop
伺服器配置展示
主機名 主機別名 使用者名稱 IP地址
h147 master hadoop 192.168.127.147
h148 slave1 hadoop 192.168.127.148
h149 slave2 hadoop 192.168.127.149

通過root許可權修改hosts檔案,配置主機別名與IP地址的對映關係


至此,主機h147中主機別名和IP地址的對映關係就配置好了《slave2 對應的是192.168.127.149》。然後分別登入h148和h149使用同樣的方式進行配置。(意思就是修改h147、h148和h149的hosts一樣就得)

在進行SSH配置之前有一點請注意:客戶端傳送到伺服器端的金鑰檔案,一定要放到登入使用者的主目錄的.ssh/下面。用h147(master)、h148(slave1)和h149(slave2)這三臺機器簡單表示說就是:主機master上的一個管理員使用者hadoop,在hadoop下生產金鑰對,一定要放到目錄 :/home/hadoop/.ssh 的下面。

為什麼呢?因為免密碼登入其實是通過檔案中的一行程式碼:


 /etc/ssh/sshd_config 檔案中紅色框中的程式碼  (慢慢你就能感受到了)

好了,我們繼續操作:


看到這裡我們的金鑰對就生成了!!

注意:有的部落格上說,(對於我目前的配置上)上圖中的綠色的線框中 [email protected] , 實則應是 [email protected] 不然整個配置不會成功。我已經驗證過了,可以成功!其他部落格說的不對!!

注意:上圖黃色線框中的兩次對於金鑰的密碼設定,不要輸入密碼,直接回車直到最後。因為這裡是一個坑,當你輸入密碼之後,即使你的ssh都配置成功了。在你進行 master->slave 進行登入的時候,你會發現-他媽的還是需要輸入密碼。而不能做到免密碼,當然了,讓你做的密碼驗證登入是 rsa 的密碼。這個坑我呆了一天半才出來。


注意:還有的部落格說(上圖),需要這種操作。我就很納悶了,我當時就單純的按照他們這種操作進行了,可是進入後發現,為什麼我的這個檔案中沒有 #RAAAuthentication yes 這行程式碼??心瞬間碎了一地!然後我就驕傲的自己粘了一行到這個檔案中。繼續,然後,最後,不成功!而且報的就是 這行程式碼的問題。而這裡,這次配置根本沒有對這個檔案做任何處理,仍然是成功的!需要指出的是  三臺伺服器上的  AuthorizedKeysFile    .ssh/authorized_keys  這行程式碼必須是解註釋狀態,ta屬於伺服器檔案,所有的免密碼登入都是通過ta的匹配授權。


接著繼續,成功生成了金鑰對,進入到 /home/hadoop/.ssh/ 檢視,可以看到 id_rsa 、 id_rsa.pub 兩個檔案。

通過命令

$cat id_rsa.pub >> authorized_keys
將公鑰上傳到伺服器。

通過命令

$scp id_rsa_pub [email protected]:/home/hadoop

將 主機master下 的 hadoop使用者下目錄檔案 /home/hadoop/.ssh/id_rsa.pub 傳遞到 主機slave1下的hadoop使用者下的目錄 /home/hadoop/ 下面。


然後我們可以看到,公鑰 id_rsa.pub 已經從 h147 傳遞到 h148 的 /home/hadoop/ 目錄下。然後再剪下到 /home/hadoop/.ssh/下面(h148的hadoop下 .ssh 目錄是通過 mkdir 生成),執行 命令

#cat id_rsa.pub >> authorized_keys 
追加到檔案authorized_keys中。

注意:我最初為了圖個簡單,直接把h147中的 authorized_keys 傳遞到了 h148 對應的hadoop目錄下。但是最後結果是失敗的,原因可能是在slave中的 ./ssh 下也必須有檔案 id_rsa.pub 導致。

最後,在h147中的hadoop使用者下執行命令

$ssh [email protected]
免密碼登入成功!<如果是第一次會讓你輸入密碼,之後就不用了>

注意:還有一點就是有的部落格說有時候需要更改 master 和 slave 的檔案的許可權,否則會導致無法金鑰授權登入(免密碼登入), 也就是,.ssh 許可權 700  .ssh/authorized_keys 許可權 600 。我也遇到一次是在如果master和localhost一樣時候,使用本地ssh登入需要修改許可權,但是之後對各個節點的ssh登入就沒遇到!本次的配置,我沒有設定檔案的許可權,都是預設的。

然後,對於slave2的操作同slave1的操作!

然後,記錄一下遇到的下一個問題。但是不太確定廣泛的情況是否是這樣。只是在我的電腦上今天遇到了。

就是如果,我各個方面已經配置好了。但是使用master 對 slave進行ssh登入時候還是需要密碼;結果我在slave上改變了 .ssh 的建立方式,並沒有更改其許可權則成功了了!



相關推薦

no