SSH金鑰認證原理

2021-07-11 10:47:05 字數 845 閱讀 4904

所謂的金鑰認證,實際上是使用一對加密字串,乙個稱為公鑰(public key), 任何人都可以看到其內容,用於加密;另乙個稱為金鑰(private key),只有擁有者才能看到,用於解密。 通過公鑰加密過的密文使用金鑰可以輕鬆解密,但根據公鑰來猜測金鑰卻十分困難。

ssh 的金鑰認證就是使用了這一特性。伺服器和客戶端都各自擁有自己的公鑰和金鑰。 為了說明方便,以下將使用這些符號。

ac 客戶端公鑰

bc 客戶端金鑰

as 伺服器公鑰

bs 伺服器金鑰

在認證之前,客戶端需要通過某種方法將公鑰 ac 登入到伺服器上。

認證過程分為兩個步驟。

會話密 鑰(session key)生成

客戶端 請求連線伺服器,伺服器將 as 傳送給客戶端。

伺服器生成會話id(session id),設為 p,傳送給客戶端。

客戶端生成會話金鑰(session key),設為 q,並計算 r = p xor q。

客戶端將 r 用 as 進行加密,結果傳送給伺服器。

伺服器用 bs 進行解密,獲得 r。

伺服器進行 r xor p 的運算,獲得 q。

至此伺服器和客戶端都知道了會話金鑰q,以後的傳輸都將被 q 加密。 認證

伺服器 生成隨機數 x,並用 ac 加密後生成結果 s(x),傳送給客戶端

客戶端使用 bc 解密 s(x) 得到 x

客戶端計算 q + x 的 md5 值 n(q+x),q為上一步得到的會話金鑰

伺服器計算 q + x 的 md5 值 m(q+x)

客戶端將 n(q+x) 傳送給伺服器

伺服器比較 m(q+x) 和 n(q+x),兩者相同則認證成功

SSH配置金鑰認證

通過配置金鑰訪問ssh,實現無密碼遠端登入伺服器,一方面簡化了操作,無需每次登入都輸入密碼,另一方如果禁用密碼登陸,只允許金鑰登入則提高了安全性,沒有密碼被破解的風險。配置金鑰ssh首先需要一對金鑰,可通過 ssh keygen 生成 ssh keygen t rsa 途中會提示指定金鑰儲存檔案 比...

Linux之SSH金鑰認證

ssh 為 secure shell 的縮寫,由 ietf 的網路小組 network working group 所制定 ssh 為建立在應用層基礎上的安全協議。ssh 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用 ssh 協議可以有效防止遠端管理過程中的資訊洩露問題。ssh...

SSH 認證原理

ssh 之所以能夠保證安全,原因在於它採用了公鑰加密。整個過程是這樣的 遠端主機收到使用者的登入請求,把自己的公鑰發給使用者。使用者使用這個公鑰,將登入密碼加密後,傳送回來。遠端主機用自己的私鑰,解密登入密碼,如果密碼正確,就同意使用者登入。這個過程本身是安全的,但是實施的時候存在乙個風險 如果有人...