SSH 為 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH 協議可以有效防止遠程管理過程中的信息洩露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平台。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平台。
從客戶端來看,SSH提供兩種級別的安全驗證:
第一種級別是基於口令的安全驗證
只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密, 但是不能保證你正在連接的服務器就是你想連接的服務器。這個過程如下:
(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。
(2)用戶使用這個公鑰,將登錄密碼加密後,發送回來。
(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。這種方式可能會有別的服務器在冒充真正的服務器,將公鑰發送給客戶端,客戶端 就會將密碼加密後發送給冒充的服務器,冒充的服務器就可以拿自己的私鑰獲取到密碼,也就是受到“中間人”這種方式的攻擊。
值得一說的是當第一次鏈接遠程主機時,會提示您當前主機的“公鑰指紋”,詢問您是否繼續,如果選擇繼續後就可以輸入密碼進行登錄了,當遠程的主機接受以後,該台服務器的公鑰就會保存到~/.ssh/known_hosts文件中。
第二種級別是基於密匙的安全驗證
需要依靠密匙,也就是你必須為自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求, 請求用你的密匙進行安全驗證。服務器收到請求之後,先在該服務器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙 一致,服務器就用公用密匙加密“質詢”並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。用這種方式,你 必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也 是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒,但是相比輸入密碼的方式來說10秒也不長。