什麼是 SSH 及其工作原理?
已發表: 2021-08-15SSH 是一種安全網絡協議,用於訪問網絡中的遠程計算機。
計算機通過網絡相互交談。 因此,網絡研究人員定義了一套與其他機器通信的規則,並開始開發像 Telnet 這樣的協議; 使用它,一個用戶可以控制另一台計算機。
但它們並不安全,即網絡中間的任何人都可以攔截和讀取正在傳輸的數據。 在 90 年代中期,一個名為ssh的更安全的協議作為 telnet 協議的可靠繼承者被引入。
如果您是某個行業的軟件開發人員或系統管理員,您可能至少使用過一次 ssh。 如果你沒有,讓我們現在學習它,因為它是必須知道的基本技能之一。
什麼是 SSH?
SSH或Secure Shell或Secure Socket Shell是一種網絡協議,可以幫助我們安全地訪問遠程機器(主要是遠程服務器)並與之通信。
它提供強大的加密功能,被網絡管理員和開發人員廣泛用於管理遠程系統和應用程序、執行命令、共享文件等。
需要 SSH
SSH 創建於 1995 年,旨在解決不安全的遠程訪問協議(如 rlogin、rsh、Telnet)所面臨的安全問題。
現在讓我們談談 Telnet,它代表 1969 年開發的Teletype Network 。它是一個簡單的命令行工具,運行在您的計算機上以訪問遠程服務器(位於全球任何地方)。 並發送要在該服務器上執行的命令,就好像您就坐在遠程服務器前(甚至離服務器幾英里遠)。 Telnet 通過網絡以純文本形式傳輸和接收消息。
您將執行的命令可以是運行程序、創建目錄、創建/刪除/傳輸文件、啟動/停止服務等。
在網絡中連接另一台機器的問題是,傳輸的數據將通過許多網絡。 與此同時,其中一些可能是不安全的,傳輸數據可能會被攔截,並可能在到達目標機器之前被修改。
在安全性不那麼重要的早期,所有通信都以純文本形式進行。 因此,可以很容易地攔截客戶端和服務器之間通過 Internet 傳輸的數據。 由於消息未加密,因此可以讀取它。
因此,明文協議極不安全,永遠不會用於敏感數據傳輸,如密碼、機密等。因此,SSH 被認為是傳統遠程訪問網絡協議的安全替代方案。
它是如何工作的?
SSH 使用客戶端-服務器架構,通過將 ssh 客戶端與 ssh 服務器連接起來,在網絡上進行安全通信。 默認情況下,ssh 服務器偵聽標準 TCP 端口 22(您可以更改它以獲得更好的安全性)。
它使用公鑰加密技術在客戶端和服務器之間進行身份驗證。 此外,該協議使用強大的對稱加密和散列算法進行客戶端和服務器之間的消息交換,以確保隱私和數據完整性。
Linux 因其安全性和耐用性而成為遠程服務器廣泛使用的操作系統。 網上很多使用Linux操作系統的服務器已經運行了很多年,沒有出現過多次故障,甚至沒有重啟過。
大多數 SSH 會話(我們訪問遠程服務器的時期)只會有以下兩個操作:
- 驗證
- 命令執行
SSH 服務器可以使用多種方法對客戶端進行身份驗證。

兩種流行的方式是:
- 基於密碼
- 基於密鑰
基於密碼的身份驗證是用於對已安裝 OpenSSH 的客戶端進行身份驗證的默認方法。 它是最基本的 ssh 身份驗證,但不是最安全的身份驗證。
即使密碼被安全地發送到服務器,現代暴力攻擊也可能繞過身份驗證。
基於密鑰的身份驗證通過生成 SSH 密鑰對進一步提高系統安全性,這被證明是一種可靠且安全的替代方案。
服務器成功驗證客戶端后,它們之間就會建立安全連接。
使用 SSH 訪問遠程服務器
如果您是 Mac/Linux 用戶,您可以直接使用終端輸入並運行 ssh 命令,因為默認情況下已經安裝了 OpenSSH。
如果您是 Windows 用戶,則需要安裝一個第三方終端仿真器客戶端才能運行 ssh 命令。 PuTTY 是 Windows 操作系統最流行的 ssh 客戶端。
要使用 SSH 連接到遠程服務器,您至少需要了解兩件事。
- 服務器主機
- 用戶名
基本 ssh 命令的語法是:
$ ssh <user-name> @ <host> -p <port-no>
user-name是我們嘗試連接的遠程機器的用戶名(而不是本地機器上的用戶), host是 IP 地址或域名。
讓我們看一個使用 OverTheWire 網站連接到遠程服務器的示例。 這是一個免費的兵棋推演挑戰網站。
現在,讓我們使用 ssh 連接到強盜挑戰。 這是教導如何使用 SSH 登錄的網站上可用的挑戰之一。
證書:
用戶名和密碼: bandit0
主機和端口: bandit.labs.overthewire.org ,2220
當您鍵入以下命令並按回車鍵時:
$ ssh [email protected] -p 2220
它將提示您輸入密碼以進行身份驗證。 現在輸入密碼並按回車鍵:
如果輸入的密碼正確,則您已成功登錄到遠程服務器,您的終端將如上圖所示。
現在您可以使用遠程機器的終端來鍵入和執行您的命令並執行您需要的操作。
當你想結束 ssh 會話時,輸入exit命令:
$ exit
當您成功退出 ssh 會話時,您會收到一條消息“連接已關閉” 。
結論
SSH 流行背後的主要原因是服務器和客戶端之間的整個通信是加密的。
大多數人認為使用 ssh 很複雜,了解它的工作原理並不容易理解,但它比您想像的要簡單。 現在您對 SSH 有了基本的了解,它是如何工作的,它背後的安全方面,以及為什麼它在通信中起著至關重要的作用。
接下來,探索一些成為系統管理員的資源。