SSH原理及兩種登入方法

2021-09-26 15:50:40 字數 2121 閱讀 5246

ssh原理及兩種登入方法

ssh(secure shell)是一套協議標準,可以用來實現兩台機器之間的安全登入以及安全的資料傳送,其保證資料安全的原理是非對稱加密

傳統的對稱加密使用的是一套秘鑰,資料的加密以及解密用的都是這一套秘鑰,可想而知所有的客戶端以及服務端都需要儲存這套秘鑰,洩露的風險很高,而一旦秘鑰便洩露便保證不了資料安全。

非對稱加密解決的就是這個問題,它包含兩套秘鑰 - 公鑰以及 私鑰,其中公鑰用來加密,私鑰用來解密,並且通過公鑰計算不出私鑰,因此私鑰謹慎儲存在服務端,而公鑰可以隨便傳遞,即使洩露也無風險。

保證ssh安全性的方法,簡單來說就是客戶端和服務端各自生成一套私鑰和公鑰,並且互相交換公鑰,這樣每一條發出的資料都可以用對方的公鑰來加密,對方收到後再用自己的私鑰來解密。

鏈結建立

由上一張圖可以看出來,兩台機器除了各自的一套公、私鑰之外,還儲存了對方的公鑰,因此必然存在乙個交換各自公鑰的步驟。實際上並不是簡單的各自傳送公鑰,而是存在一些專門的演算法。這一步在首次鏈結時、資料傳送之前發生。

客戶端發起鏈結請求

服務端返回自己的公鑰,以及乙個會話id(這一步客戶端得到服務端公鑰)

客戶端生成金鑰對

客戶端用自己的公鑰異或會話id,計算出乙個值,並用服務端的公鑰加密

客戶端傳送加密後的值到服務端,服務端用私鑰解密

服務端用解密後的值異或會話id,計算出客戶端的公鑰(這一步服務端得到客戶端公鑰)

至此,雙方各自持有三個秘鑰,分別為自己的一對公、私鑰,以及對方的公鑰,之後的所有通訊都會被加密

這裡有乙個有趣的地方,兩台機器第一次使用ssh鏈結時,當服務端返回自己的公鑰(第2步)的時候,客戶端會有一條資訊提示,大意是無法驗證對方是否可信,並給出對方公鑰的md5編碼值,問是否確定要建立鏈結。

這是因為ssh雖然傳輸過程中很安全,但是在首次建立鏈結時並沒有辦法知道發來的公鑰是否真的來自自己請求的伺服器,如果有人在客戶端請求伺服器後攔截了請求,並返回自己的公鑰冒充伺服器,這時候如果鏈結建立,那麼所有的資料就都能被攻擊者用自己的私鑰解密了。這也就是所謂的中間人攻擊

利用密碼登入

ssh還常用來遠端登入到別的機器,有兩種常用的方法,第一種便是賬號密碼登入。

服務端收到登入請求後,首先互換秘鑰,詳細步驟如上一節所述。

客戶端用服務端的公鑰加密賬號密碼並傳送

服務端用自己的秘鑰解密後得到賬號密碼,然後進行驗證

服務端用客戶端的公鑰加密驗證結果並返回

服務端用自己的秘鑰解密後得到驗證結果

利用公鑰登入

有些時候並不是開發者手動去連線伺服器,而是客戶端的程式需要連線到伺服器,這時候用密碼登入就比較不方便,一是需要處理輸入密碼的問題,二是需要想辦法安全的儲存密碼到程式裡,這種情況下便可以利用公鑰來進行無密碼登入。

客戶端使用者必須手動地將自己的公鑰新增到伺服器乙個名叫authorized_keys的檔案裡,顧名思義,這個檔案儲存了所有可以遠端登入的機器的公鑰。

客戶端發起登入請求,並且傳送乙個自己公鑰的指紋(具有唯一性,但不是公鑰)

服務端根據指紋檢測此公鑰是否儲存在authorized_keys中

若存在,服務端便生成一段隨機字串,然後利用客戶端公鑰加密並返回

客戶端收到後用自己的私鑰解密,再利用服務端公鑰加密後發回

服務端收到後用自己的私鑰解密,如果為同一字串,則驗證通過

利用公鑰登入的關鍵是必須手動將客戶端的公鑰新增到服務端,比如github便有這一步驟,新增了之後便可無密碼登入。

備忘 SSH兩種登入原理簡介

ssh 22埠 是secure shell 的簡寫,由ietf network working group 制定,在進行資料傳輸之前,ssh先對聯機資料報通過加密技術進行加密處理,加密後在進行資料傳輸。確保了傳遞的資料安全。ssh 通訊過程一般分為5個階段 具體就不記錄了。1 版本協商階段 2 金鑰...

SSH簡介及兩種遠端登入的方法

secure shell ssh 是由 ietf the internet engineering task force 制定的建立在應用層基礎上的安全網路協議。它是專為遠端登入會話 甚至可以用windows遠端登入linux伺服器進行檔案互傳 和其他網路服務提供安全性的協議,可有效彌補網路中的漏洞...

ssh 登入 SSH兩種登入驗證方式

ssh是一種協議標準,其目的是實現安全遠端登入以及其它安全網路服務。ssh登入主要分為兩個階段 1 協商客戶端和服務端雙方通訊所使用的共享金鑰,並用這個共享金鑰實現後續會話過程的對稱加密 2 使用非對稱加密方式驗證客戶端的身份。圖 1 交換共享秘鑰 1 客戶端發起tcp連線請求 2 伺服器返回其支援...