OpenSSH密鑰驗證

簡介

   SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 爲建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題

功能

   傳統的網絡服務程序,如:ftppoptelnet在本質上都是不安全的,因爲它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的***。所謂“中間人”的***方式, 就是“中間人”冒充真正的服務器接收你傳給服務器的數據,然後再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之後,就會出現很嚴重的問題。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種***方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以爲FTPPoP、甚至爲PPP提供一個安全的"通道"

驗證方式

客戶端來看,SSH提供兩種級別的安全驗證如下:

第一種級別(基於口令的安全驗證)

   只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的***。

第二種級別(基於密匙的安全驗證)

   需要依靠密匙,也就是你必須爲自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之後,先在該服務器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。

第二種級別不僅加密所有傳送的數據,而且“中間人”這種***方式也是不可能的(因爲他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒

   在服務器端,SSH也提供安全驗證。 在第一種方案中,主機將自己的公用密鑰分發給相關的客戶端,客戶端在訪問主機時則使用該主機的公開密鑰來加密數據,主機則使用自己的私有密鑰來解密數據, 從而實現主機密鑰認證,確定客戶端的可靠身份。 在第二種方案中,存在一個密鑰認證中心,所有提供服務的主機都將自己的公開密鑰提交給認證中心,而任何作爲客戶端的主機則只要保存一份認證中心的公開密鑰就可以了;而且在這種模式下,客戶端必須訪問認證中心然後才能訪問服務器主機


第二種級別(基於密匙的安全驗證)具體實現方式

1、我們基於一個案例來介紹如何使用基於密鑰驗證的訪問機制


註釋:這個案例介紹了Client基於密鑰驗證訪問連接SSH_Server服務器,然後可以連接控制SSH_Server後端的內部服務器
2、SSH基於客戶端認證機制具體做法如下:


3、將公鑰上傳至服務器端某個用戶的家目錄下的.ssh/authorized_keys文件中如下:

4、登錄到SSH_Server服務器查看公鑰是否已經成功上傳

5、測試使用Client登錄到SSH_Server是否需要密碼:


註釋說明:

ssh-keygen:

   -t:指定要創建的密鑰類型;如:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)

   -f:指定密鑰文件名

   -P:提供(舊)密碼

ssh-copy-id:

   -i:指定公鑰文件

到此爲止,已經能成功連接到SSH_Server服務器,下面進行連接後端的服務器就不再做測試,相信後面的測試很簡單就可以實現;如果博友們有疑問或不清楚的地方可以留言...



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章