首頁  >  文章  >  什麼叫 SSH ?原理詳解,看這篇就夠了!

什麼叫 SSH ?原理詳解,看這篇就夠了!

Linux中文社区
Linux中文社区轉載
2023-08-02 17:51:431122瀏覽

什麼叫 SSH ?原理詳解,看這篇就夠了!

#SSH( Secure Shell,安全外殼)是一種網路安全協議,透過加密和認證機制實現安全的存取和檔案傳輸等業務。傳統遠端登入或檔案傳輸方式,例如Telnet、FTP,使用明文傳輸數據,存在著許多的安全隱患。隨著人們對網路安全的重視,這些方式已經慢慢不被接受。 SSH協定透過對網路資料進行加密和驗證,在不安全的網路環境中提供了安全的登入和其他安全網路服務。作為Telnet和其他不安全遠端shell協定的安全替代方案,目前SSH協定已經被全世界廣泛使用,大多數設備都支援SSH功能。

目錄

SSH連接埠號碼是什麼?
SSH是如何運作的?
使用PuTTY和OpenSSHSSH金鑰

SSH連接埠號碼是什麼?

當SSH應用於STelnet,SFTP以及SCP時,使用的預設SSH連接埠都是22。當SSH應用於NETCONF時,可以指定SSH連接埠是22或830。 SSH連接埠支援修改,變更後目前所有的連線都會斷開,SSH伺服器開始偵聽新的連接埠。

SSH是如何運作的?

SSH由伺服器和用戶端組成,在整個通訊過程中,為建立安全的SSH通道,會經歷以下幾個階段:

##連線建立

SSH伺服器在指定的連接埠偵聽客戶端的連線請求,在客戶端向伺服器啟動連線請求後,雙方建立一個TCP連線。

版本協商

SSH協定目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。 SSH2.0協定相比SSH1.X協定來說,在結構上做了擴展,可以支援更多的認證方法和金鑰交換方法,同時提高了服務能力。 SSH伺服器和客戶端透過協商確定最終使用的SSH版本號。

演算法協商

SSH支援多種加密演算法,雙方根據各自支援的演算法,協商出最終用於產生會話金鑰的金鑰交換演算法、用於資料資訊加密的加密演算法、用於進行數位簽章和認證的公鑰演算法以及用於資料完整性保護的HMAC演算法。

什麼叫 SSH ?原理詳解,看這篇就夠了!什麼叫 SSH ?原理詳解,看這篇就夠了!什麼叫 SSH ?原理詳解,看這篇就夠了!什麼叫 SSH ?原理詳解,看這篇就夠了!什麼叫 SSH ?原理詳解,看這篇就夠了!什麼叫 SSH ?原理詳解,看這篇就夠了!

#!接私活必備的 N 個開源專案!

金鑰交換

伺服器和用戶端透過金鑰交換演算法,動態產生共享的會話金鑰和會話ID,建立加密通道。會話金鑰主要用於後續資料傳輸的加密,會話ID用於在認證過程中識別此SSH連線。

使用者認證

SSH客戶端向伺服器端發起認證請求,伺服器端對客戶端進行認證。 SSH支援以下幾種認證方式:

  • 密碼(password)認證:用戶端透過使用者名稱和密碼的方式進行認證,將加密後的使用者名稱和密碼傳送給伺服器,伺服器解密後來與本地保存的使用者名稱和密碼進行對比,並向客戶端傳回認證成功或失敗的訊息。
  • 金鑰(publickey)認證:客戶端透過使用者名稱,公鑰以及公鑰演算法等資訊來與伺服器進行認證。
  • password-publickey認證:指使用者需要同時符合密碼認證和金鑰認證才能登入。
  • all認證:只要滿足密碼認證和金鑰認證其中一種即可。

會話請求

認證通過後,SSH客戶端向伺服器端發送會話請求,請求伺服器提供某種類型的服務,即請求與伺服器建立相應的會話。另外,搜尋公眾號Linux就該這樣學後台回覆“Linux”,取得驚喜禮包。

會話互動

會話建立後,SSH伺服器端和客戶端在該會話上進行資料資訊的互動。

使用PuTTY和OpenSSH

PuTTY是Windows上經典的免費SSH連接工具,通常用於使用SSH協定遠端登入設備,最新版本可以在PuTTY官網下載。

OpenSSH是SSH協定的開源實現,支援在Unix作業系統上運行,最新版本可以在OpenSSH官網下載。目前Windows10已經包含OpenSSH客戶端和伺服器軟體,可在「設定—應用—應用程式與功能—選用功能」中搜尋安裝。

SSH金鑰

#對稱加密與非對稱加密

提高安全性的基本方式就是加密,加密演算法透過金鑰將明文轉換為密文進行安全傳輸。 SSH在工作過程中結合使用了對稱加密和非對稱加密兩種類型的演算法,透過事先產生的SSH金鑰來確保資訊傳輸的安全性。兩種加密演算法的加解密過程請見下圖。

什麼叫 SSH ?原理詳解,看這篇就夠了!

對稱加密演算法


什麼叫 SSH ?原理詳解,看這篇就夠了!

#非對稱加密演算法 

對稱加密演算法使用同一個金鑰對資料進行加密和解密。 SSH連線建立過程中產生的會話金鑰就是對稱金鑰,該金鑰是由客戶端和伺服器端基於共享的部分資訊和各自的私有資料使用金鑰交換演算法分別產生的。因為對稱加密演算法加解密的速度很快,所以適用於傳輸大量資料的場景。

非對稱加密的發送和接收需要使用一對關聯的SSH金鑰,公鑰和私鑰。私鑰由產生的一方自己保管,公鑰可以發送給任何請求通訊的其他人。發送者用收到的公鑰對自己的通訊內容進行加密,只有接收者可以使用私鑰進行解密以取得通訊內容。非對稱加密的私鑰不需要暴露在網路中,安全性大大增加,但是加解密的速度比對稱金鑰慢得多。

SSH連接過程中的兩個階段使用了非對稱加密。一個是在金鑰交換階段,伺服器和用戶端都產生了自己臨時的公鑰和私鑰,用於計算出同一個用於後續加密通訊內容的會話金鑰。另外一個就是在使用者認證階段,利用只有匹配的私鑰可以唯一解密公鑰加密的內容這一特點,透過客戶端的公鑰私鑰對驗證客戶端的身份。

金鑰認證

SSH使用者認證最基本的兩種方式是密碼認證和金鑰認證。密碼認證是將自己的使用者名稱和密碼傳送給伺服器進行認證,這種方式比較簡單,每次登入都需要輸入使用者名稱和密碼。金鑰認證使用公鑰私鑰對進行身份驗證,實現安全的免密登錄,是一種廣泛使用且建議的登入方式。金鑰認證的基本原理是伺服器端使用客戶端的公鑰對隨機內容加密,客戶端使用自己的私鑰解密並發送給伺服器以證實自己的身份,具體的過程請見下圖。

什麼叫 SSH ?原理詳解,看這篇就夠了!


SSH金鑰認證登入流程

  • 在進行SSH連線之前,SSH客戶端需要先生成自己的公鑰私鑰對,並將自己的公鑰存放在SSH伺服器上。
  • SSH客戶端發送登入請求,SSH伺服器就會根據請求中的使用者名稱等資訊在本地搜尋客戶端的公鑰,並用這個公鑰加密一個隨機數字發送給客戶端。
  • 客戶端使用自己的私鑰對回傳資訊進行解密,並傳送給伺服器。
  • 伺服器驗證客戶端解密的資訊是否正確,如果正確則認證通過。

以上是什麼叫 SSH ?原理詳解,看這篇就夠了!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:Linux中文社区。如有侵權,請聯絡admin@php.cn刪除