歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

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服務全過程及問題解決 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

更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14

Copyright © Linux教程網 All Rights Reserved