Linux之SSH密鑰認證


1、SSH協議的認識

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平台。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平台。幾乎所有UNIX平台—包括HP-UXLinuxAIXSolarisDigital UNIXIrix,以及其他平台,都可運行SSH。

2、通過SSH管理遠程服務器

通過SSH協議,用戶可以通過終端機訪問和使用遠程linux服務器,ssh的端口為22。但每次進行連接都要輸入密碼。如果管理幾台到十幾台集群,那可以應付的的過來。如果集群增加了幾百,上千台。那么使用SSH管理起來就不方便了。所以SSH有沒有更簡便的方法呢?有的,在linux集群中,由一台管理機通過SSH管理其它的遠程linux服務器,這種方法被稱為SSH密鑰認證管理服務器。原理如下圖:

 

3、服務器的布署和划分

管理機:172.16.1.61 m01

NFS服務器: 172.16.1.31 nfs01

WEB服務器: 172.16.1.8 web01

4、首先檢查管理機和被管理機上的SSH是否已經安裝和啟用

管理機m01:

NFS服務器nfs01:

WEB服務器web01:

 

 

4、首先在m01服務器上,創建密鑰對:公鑰和私鑰

 

[root@m01 ~]# ssh-keygen -t dsa

如下圖所示:提示輸入是否確認,所有的提示按Enter鍵.

查看是否密鑰創建成功,密鑰生成后,保存在/root/.ssh/下,這是一個隱藏目錄。

其中:id_dsa是私鑰,id_dsa.pub是公鑰

由上圖所見我們已經創建密鑰成功

5、把公鑰拷貝到所有被管理機中

將公鑰拷貝到nfs01服務器中,使用命令ssh-copy-id 。因為我更改過nfs01的ssh端口,由端口22變為端口52113.所以要添加"-p 52113"。拷貝到web01也是同理

[root@m01 ~]# ssh-copy-id -i ./.ssh/id_dsa.pub "-p 52113 oldboy@172.16.1.31"

如下圖提示,第一次拷貝要輸入確認yes和oldboy帳號的密碼。

查看nfs01上面是否拷貝成功,拷貝的文件在oldboy家目錄下的隱藏目錄.ssh下

6、測試

a.在m01上遠程執行nfs01上的命令

 

[root@m01 ~]# ssh -p 52113 oldboy@172.16.1.31 "/sbin/ifconfig eth0"

b.從m01上拷貝文件到nfs01上

查看nfs01上是否拷貝過去

7、總結

a.SSH創建密鑰后,公鑰發送給各個被管理的服務器中。

b.除了第一次發送公鑰后,需要密碼,其他遠程操作不再需要密碼。

另外:每次連接一個新的服務器都要手動確認和輸入密碼,也是不一般的麻煩。那有沒有一種方法不需要手動確認和輸入密碼?有的,那就是expect程序。

關於expect請看我的下一篇博文.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM