CentOS6.4之圖解SSH無密碼驗證雙向登陸配置
CentOS6.4之圖解SSH無密碼驗證雙向登陸配置
配置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服務全過程及問題解決
Ubuntu 14.04 下安裝Samba 及SSH 服務端的方法
SSH服務遠程訪問Linux服務器登陸慢
提高Ubuntu的SSH登陸認證速度的辦法
開啟SSH服務讓Android手機遠程訪問 Ubuntu 14.04
如何為Linux系統中的SSH添加雙重認證
在 Linux 中為非 SSH 用戶配置 SFTP 環境
Linux 上SSH 服務的配置和管理
http://xxxxxx/Linuxjc/1135399.html TechArticle