首頁 > 軟體

CentOS6.4之圖解SSH無密碼驗證雙向登陸設定

2020-06-16 17:39:57

設定SSH無登陸驗證,在很多場景下是非常方便的,尤其是在管理大型叢集服務時,避免了繁瑣的密碼驗證,在安全級別越高的伺服器上,通常密碼的設定更複雜,設定SSH,不僅可以用金鑰保證節點間通訊的安全性,同時也降低了頻繁輸入密碼登陸的耗時,大大提高了管理效率。散仙寫此篇文章,也是給準備入手Hadoop的道友們先做好一個基礎的準備,當然你也可以不設定SSH,只要你願意頻繁輸入Slave節點的密碼來登陸。


1. SSH無密碼驗證的原理 


Master作為用戶端,要實現無密碼公鑰認證,連線到伺服器Salve上時,需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Salve上。當Master通過SSH連結到Salve上時,Salve會生成一個亂數並用Master的公鑰對亂數進行加密,並行送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Salve,Salve確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,期間不需要手工輸入密碼,重要的過程是將Master上產生的公鑰複製到Salve上。 


2.SSH無密碼登陸的幾種關係 

通常情況下,一個叢集服務下至少有一個Master和若干個Slave 
,那麼無密碼登陸通常指的是由Master到任意一個Slave的無驗證的單向登陸,意思就是只能從Master登陸到Slave是不需要密碼的,但是如果你想從Slave無驗證登陸到Master,或者你想在Slave與Slave之間進行無驗證登陸,這些都是不可行的,除非,你進行了金鑰對的雙向驗證,才可以雙向登陸,我們在這裡先不去議論相互之間登陸有沒有意義,可能某些情況下或許需要這些方式。 



節點名 IP地址
Master 10.2.143.5
Slave 10.2.143.36


下面開始步入正題,散仙使用的是CentOS6.4版本的,設定的是2個節點之間的雙向的SSH無驗證登陸,其他幾種系統的也大同小異,我們首先使用root使用者登陸,在network中修改機器名,並在hosts檔案中新增對映資訊,然後執行儲存退出,Slave機按同樣方法設定,具體操作見下圖 


 


 


 


 


然後我們在Master,Slave機上分別用root使用者建一個hadoop使用者,並設定密碼,注意使用者名稱,密碼保持一致。 


 

然後,登入hadoop使用者,執行以下命令,生成金鑰對,並把公鑰檔案寫入授權檔案中,並賦值許可權, 
    ssh-keygen –t rsa –P '' 
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
  chmod 600 ~/.ssh/authorized_keys 
最後切換root使用者,設定sshd,取消被註釋的公鑰欄位, 
    RSAAuthentication yes # 啟用 RSA 認證 
    PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式 
    AuthorizedKeysFile .ssh/authorized_keys # 公鑰檔案路徑(和上面生成的檔案同) 
並儲存設定,然後重新啟動sshd,即可測試本機的SSH,如下圖所示。 



 


 


 


 

至此,我們本機的SSH已經設定完畢,下面給出SSH登陸本機圖


 

在上圖中,我們可以看出,無論使用localhost,還是IP地址,或者是主機名,我們都可以順利的進行本機的無驗證登陸。 



下面,散仙進行把Master的公鑰檔案通過scp拷貝到已經建立好的Slave節點的hadoop使用者上,需要注意的是,在這個使用者上不一定有.ssh資料夾,如果沒有的話,也沒關係,建立一個.ssh資料夾,並賦予700的管理許可權,最後將公鑰追加到授權檔案中,並賦予600的許可權,這兩步比較重要,切記! 


 

拷貝完成之後,去Slave機上進行,公鑰追加授權檔案,並賦值許可權,然後切換root使用者,進行sshd設定,並重新啟動ssh服務,步驟,如Master機的設定。
 
 


 


然後,回到Master機的hadoop使用者上,進行測試 



 


 

我們發現此時,已經不需要密碼驗證了。當然現在只是單向登陸從Master到Slave的可以,如果從Slave到Master的你會發現不行,這個是正常的,想要雙向登陸,必須得兩台機器互相認證彼此的公鑰檔案,以此類推無論是你有多少台節點,只要機器雙方之間有認證,就可以任意實現無驗證登陸,當然在我們實際的生產環境中,只考慮有意義的認證,下面散仙在Slave節點下的hadoop使用者裡,生成自己的公鑰檔案,並用scp拷貝到Master上,然後將公鑰追加的授權檔案中,以此實現雙向認證。 



Slave機上的hadoop使用者生成金鑰對 

 


Slave機上拷貝公鑰到Master機上的hadoop使用者上 

 

然後與上面相同的方式追加到授權檔案authorized_keys裡面。然後就大功搞成了,散仙給出截圖證明雙向無驗證登陸。 
Master機上hadoop使用者的雙向認證 


 

Slave機上hadoop使用者的雙向認證 

 


至此,我們的雙向無登陸驗證,已經搞定了,對於多節點的,也是這個道理,只有節點之間都有相互的公鑰認證,就可以雙向認證了,如果是單向管理的,只需要設定一方的公鑰就可以了,當然,在實際的環境中,大部分都是單向的。這個我們要根據實際的情況來處理。

下面關於SSH相關的文章您也可能喜歡,不妨參考下:

Ubuntu 下設定 SSH服務全過程及問題解決 http://www.linuxidc.com/Linux/2011-09/42775.htm

Ubuntu 14.04 下安裝Samba 及SSH 伺服器端的方法 http://www.linuxidc.com/Linux/2015-01/111971.htm

SSH服務遠端存取Linux伺服器登陸慢 http://www.linuxidc.com/Linux/2011-08/39742.htm

提高Ubuntu的SSH登陸認證速度的辦法 http://www.linuxidc.com/Linux/2014-09/106810.htm

開啟SSH服務讓Android手機遠端存取 Ubuntu 14.04  http://www.linuxidc.com/Linux/2014-09/106809.htm

如何為Linux系統中的SSH新增雙重認證 http://www.linuxidc.com/Linux/2014-08/105998.htm

在 Linux 中為非 SSH 使用者設定 SFTP 環境 http://www.linuxidc.com/Linux/2014-08/105865.htm

Linux 上SSH 服務的設定和管理 http://www.linuxidc.com/Linux/2014-06/103627.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-06/132219.htm


IT145.com E-mail:sddin#qq.com