什麼是 SSH? | 安全殼層 (SSH) 通訊協定

安全殼層 (SSH) 通訊協定在電腦之間建立遠端加密連線。它還支援通道。

學習目標

閱讀本文後,您將能夠:

  • 定義安全殼層 (SSH) 通訊協定
  • 描述 SSH 的運作方式以及是什麼使它安全
  • 瞭解 SSH 通道
  • 說明 SSH 的安全風險

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是安全殼層 (SSH) 通訊協定?

安全殼層 (SSH) 通訊協定是一種透過不安全的網路安全地向電腦傳送命令的方法。SSH 使用加密技術對裝置之間的連線進行驗證和加密。SSH 還允許通道或連接埠轉寄,即資料封包能夠穿過原本無法穿過的網路。SSH 通常用於遠端控制伺服器、管理基礎架構和傳輸檔案。

旅行時,商店老闆可能會從遠處向員工發出指示,以確保商店在他們離開時順利運作。同樣,SSH 允許管理員遠端管理伺服器和裝置。較舊的遠端管理通訊協定(例如 Telnet)以任何人都可以看到的形式傳輸管理員命令。(想像一下,如果員工在和商店老闆通話時打開免持聽筒,那麼店裡的所有顧客都可以無意中聽到私人指示。)與 Telnet 不同,SSH 是安全的,因此被稱為「安全殼層」。

SSH 有什麼作用?

遠端加密連線:SSH 在使用者裝置和遠端電腦(通常是伺服器)之間建立連線。它使用加密來擾亂通過連線的資料。攔截者只能找到靜態的隨機資料,這些資料如果不解密,就毫無意義。(SSH 使用的加密方法使外人難以解密。)

通道能力:在網路中,通道是一種使用通訊協定或通常無法使用的路徑在網路上移動封包的方法。通道的工作方式是用附加資訊(稱為標頭)包裝資料封包*,以變更其目的地。SSH 通道使用一種稱為連接埠轉送的技術將封包從一台電腦傳送到另一台電腦。下文將更詳細地說明連接埠轉送。

*所有通過網路的資料都會被分解為更小的區塊,稱為「封包」。

SSH 如何運作?

TCP/IP

SSH 在 TCP/IP 通訊協定套件之上執行,許多網際網路都依賴該套件。TCP 表示傳輸控制通訊協定,IP 表示網際網路通訊協定。TCP/IP 將這兩個通訊協定配對,以便格式化、路由和傳送封包。除其他資訊外,IP 還指示封包應前往哪個 IP 位址(類似於郵寄地址),而 TCP 則指示封包應傳送至每個 IP 位址的哪個連接埠(類似於建築物的樓層或公寓號碼)。

TCP 是傳輸層通訊協定:它涉及封包的運輸和投遞。通常會在 TCP/IP 之上使用附加的通訊協定,以便使傳輸的資料採用應用程式可以使用的形式。SSH 就是這樣一種通訊協定。(其他範例包括 HTTP、FTP 和 SMTP。)

公開金鑰加密

SSH 是「安全的」,因為它透過稱為公開金鑰加密的過程結合了加密和驗證公開金鑰加密是一種使用兩個不同金鑰加密資料或簽署資料的方法。其中一個金鑰為公開金鑰,可供任何人使用。另一個金鑰為私密金鑰,由其擁有者保密。由於兩個金鑰相互對應,要確定金鑰擁有者的身分,就需要擁有與公開金鑰配套的私密金鑰。

這些「非對稱」金鑰(之所以如此命名,是因為它們具有不同的值)還使連線的兩端能夠交涉相同的共用對稱金鑰,以便透過通道進行進一步加密。一旦交涉完成,雙方就使用對稱金鑰來加密它們交換的資料。

在 SSH 連線中,雙方都有一個公開/私密金鑰對,並且每一方都使用這些金鑰來驗證對方。這將 SSH 與 HTTPS 區分開來,後者在大多數實作中僅驗證用戶端伺服器連線中 Web 伺服器的身分。(其他區別包括 HTTPS 通常不允許用戶端存取伺服器的命令列,防火牆有時會封鎖 SSH,但幾乎從不封鎖 HTTPS。)

認證

雖然公開金鑰加密技術可以對 SSH 中連接的裝置進行驗證,但經過適當保護的電腦仍需要使用 SSH 的人員進行驗證。通常,這採取輸入使用者名稱和密碼的形式。

驗證完成後,使用者可以在遠端電腦上執行命令,就像在自己的本機電腦上執行命令一樣。

SSH 通道或「連接埠轉送」

連接埠轉送就像在兩個人之間轉寄訊息。Bob 向 Alice 傳送了一條訊息,而 Alice 又將這條訊息傳遞給 Dave。同樣,連接埠轉送將導向到一台電腦上的 IP 位址和連接埠的封包傳送到另一台電腦上的 IP 位址和連接埠。

例如,假設管理員想要對他們管理的私人網路內的伺服器進行變更,並且他們希望從遠端位置執行此操作。但是,出於安全原因,該伺服器僅接收來自同一私人網路內其他電腦的封包。管理員可以連線到網路中的第二台伺服器(開放接收網際網路流量的伺服器),然後使用 SSH 連接埠轉送連線到第一台伺服器。從第一台伺服器的角度來看,管理員的封包來自於自私人網路內部。

使用 SSH

Linux 和 Mac 作業系統內建了 SSH。Windows 機器可能需要安裝 SSH 用戶端應用程式。在 Mac 和 Linux 電腦上,使用者可以開啟終端應用程式並直接輸入 SSH 命令。

SSH 有何用途?

從技術上講,SSH 可以透過網路傳輸任意資料,並且 SSH 通道可以用於多種目的。不過,最常見的 SSH 用例是:

  • 遠端管理伺服器、基礎架構和員工電腦
  • 安全地傳輸檔案(SSH 比 FTP 之類的未加密通訊協定更安全)
  • 無需將本機的連接埠暴露給網際網路,即可存取雲端服務
  • 遠端連線到私人網路中的服務
  • 繞過防火牆限制

SSH 使用哪個連接埠?

連接埠 22 是 SSH 的預設連接埠。有時,防火牆可能會封鎖存取防火牆後面的伺服器上的某些連接埠,但將連接埠 22 保持開啟。因此,SSH 對於存取防火牆另一側的伺服器非常有用:導向到連接埠 22 的封包不會被封鎖,然後可以轉寄到任何其他連接埠。

SSH 是否有任何安全風險?

任何通訊協定都可能被惡意方濫用,而 SSH 的加密特性和通道功能使其對攻擊者特別有吸引力。許多記錄在案的攻擊中都用到了 SSH,以便擷取私人資料、開啟進入安全網路的後門路由,甚至獲得伺服器上的 root 存取權限。

某些類型的攻擊還可以竊取 SSH 金鑰以存取私人電腦和伺服器。事實上,SSH 金鑰管理對於大型組織來說是一個主要的安全問題,因為他們的許多伺服器可能使用數千個甚至數百萬個金鑰,而追蹤和更新這些金鑰幾乎是不可能的。一旦攻擊者獲得金鑰,他們可能擁有數月或數年的持久存取權限。

SSH 與其他通道通訊協定有何不同?

SSH 和其他通道通訊協定之間的主要區別之一是它們運作所在的 OSI 層GRE、IP-in-IP 和 IPsec VPN 都是網路層通訊協定。因此,它們不知道連接埠(傳輸層概念),而是在 IP 位址之間運作。(SSH 的確切 OSI 層並沒有嚴格定義,但大多數來源將其描述為第 7 層/應用程式層通訊協定。)

另一個差異是 SSH 使用 TCP。如上所述,TCP 是傳輸層通訊協定,是網際網路上使用的主要通訊協定之一。另一種廣泛使用的傳輸層通訊協定是UDP (User Datagram Protocol)。UDP 是一種「盡力而為」的傳輸通訊協定,它傳送封包,但不確保其送達,這使其速度更快,但有時會導致封包遺失。雖然 TCP 比 UDP 慢,但它保證了所有封包按順序送達,因此更可靠。

IPsec VPN 專門使用 UDP 而不是 TCP 來使 IPsec VPN 封包能夠通過防火牆。因此,IPsec VPN 通道通常比 SSH 通道更快,但可能會在傳輸過程中遺失封包。GRE 和 IP-in-IP 可以與 TCP 或 UDP 一起使用。

最後,SSH 一次僅加密一個應用程式,而不加密進出裝置的所有流量。這是 SSH 與 IPsec VPN 的不同之處,後者會加密所有網路流量,無論其來自哪個應用程式。因此,SSH 不用於設定 VPN

Cloudflare Zero Trust 如何使 SSH 更安全?

雖然 SSH 得到廣泛使用,但將伺服器連接埠暴露給網際網路始終存在風險。Cloudflare Zero Trust 可讓組織使他們的 SSH 伺服器在網際網路上可用,而無需擔心開啟這些輸入連接埠的風險。伺服器可以安全地連接到 Cloudflare 網路。然後,管理員和其他使用者可以透過在其裝置上安裝 Cloudflare Warp 用戶端來透過 Cloudflare 存取伺服器;在這裡瞭解更多。