你好,歡迎來到js代碼網。

微信登錄

首頁>系統/運維> 快速了解SSH的工作原理

快速了解SSH的工作原理

  • 分類:系統/運維
  • 時間:11-12
  • 閱讀:978


熟悉Linux的人肯定都知道SSH。SSH是一種用于安全訪問遠程服務器的網絡協議。它將客戶端與服務端之間的消息通過加密保護起來,這樣就無法被竊取或篡改了。那么它安全性是如何實現的呢?


為了理解SSH,先要介紹兩個重要概念:對稱加密非對稱加密

對稱加密:



在對稱加密中,客戶端和服務端使用同一個密鑰對數據進行加密和解密。這種方法的好處是加密強度高,很難破解。缺點也很明顯,即密鑰本身容易被泄漏。因此,如何保存密鑰成為了關鍵問題。于是引出了第二種加密方式:非對稱加密。

非對稱加密:



在非對稱加密中有兩個密鑰,公鑰和私鑰。這兩個密鑰配對產生和使用。用公鑰加密的數據,必須用與其對應的私鑰才能解開。并且,私鑰無法通過公鑰獲取。因此,公鑰是可以被公開的,而私鑰則必須被安全存放。

在SSH中,非對稱加密被用來在會話初始化階段為通信雙方進行會話密鑰的協商。由于非對稱加密的計算量開銷比較大,因此一旦雙方的會話密鑰協商完成,后續的加密都將采用對稱加密來進行。

接下來,我們來看一看SSH會話建立的過程。



1. 客戶端發起一個TCP連接,默認端口號為22.

2. 服務端收到連接請求后,將自己的一些關鍵信息發給客戶端。這些信息包括:

- 服務端的公鑰:客戶端在收到這個公鑰后,會在自己的“known_hosts”文件進行搜索。如果找到了相同的公鑰,則說明此前連接過該服務器。如果沒有找到,則會在終端上顯示一段警告信息,由用戶來決定是否繼續連接。

 [email protected]:~$ ssh geekyshacklebolt
 The authenticity of host 'geekyshacklebolt (192.168.42.222)' can't be established.
 ECDSA key fingerprint is SHA256:Ql/KnGlolY9eCGuYK3OX3opnSyJQzsbtM3DW/UZIxms.
 Are you sure you want to continue connecting (yes/no)?
 
- 服務器所支持的加密算法列表:客戶端根據此列表來決定采用哪種加密算法。

3. 生成會話密鑰。此時,客戶端已經擁有了服務端的公鑰。接下來,客戶端和服務端需要協商出一個雙方都認可的密鑰,并以此來對雙方后續的通信內容進行加密。

密鑰協商是通過Diffie - Hellman算法來實現的。具體過程是:

1)服務端和客戶端共同選定一個大素數,叫做種子值;

2)服務端和客戶端各自獨立地選擇另外一個只有自己才知道的素數;

3)雙方使用相同的加密算法(如AES),由種子值和各自的私有素數生成一個密鑰值,并將這個值發送給對方;

4)在收到密鑰值后,服務端和客戶端根據種子值和自己的私有素數,計算出一個最終的密鑰。這一步由雙方分別獨立進行,但是得到的結果應該是相同的。

5)雙方使用上一步得到的結果作為密鑰來加密和解密通信內容。

4. 接下來,客戶端將自己的公鑰id發送給服務端,服務端需要對客戶端的合法性進行驗證:

1)服務端在自己的“authorized_keys”文件中搜索與客戶端匹配的公鑰。

2)如果找到了,服務端用這個公鑰加密一個隨機數,并把加密后的結果發送給客戶端。

3)如果客戶端持有正確的私鑰,那么它就可以對消息進行解密從而獲得這個隨機數。

4)客戶端由這個隨機數和當前的會話密鑰共同生成一個MD5值。

5)客戶端把MD5值發給服務端。

6)服務端同樣用會話密鑰和原始的隨機數計算MD5值,并與客戶端發過來的值進行對比。如果相等,則驗證通過。

至此,通信雙方完成了加密信道的建立,可以開始正常的通信了。

總結:

SSH巧妙地利用了對稱加密與非對稱加密各自的特點,實現了一套安全保密的遠程控制協議。


相關文章

北京 28开奖走势图