SSH 與 Telnet 有何不同?

已發表: 2023-03-15
計算機屏幕的特寫,可以看到 PuTTY 配置選項。
Jordan Gloor / How-To Geek
TELNET 沒有任何加密,所以一切都以明文傳輸。 SSH 是加密的,因此它是私密且安全的。 這就是應該優先使用 SSH 而不是 TELNET 的原因。

SSH 和 TELNET 都可以讓您連接到遠程聯網計算機並像坐在它們前面一樣使用它們。 那麼這兩個古老的協議之間有什麼區別,使用 SSH 而不是 TELNET 真的總是有優勢嗎?

TELNET 和 SSH:起源故事

需要是發明之母。 系統管理員需要一種方法來訪問和管理物理上位於其他地方的計算機。 如果管理員將自己放在計算機前不切實際或不方便,他們需要一種訪問遠程計算機的方法,使他們能夠像在計算機中鍵入命令一樣發出命令。

TELNET 是teletype over net work protocol 的縮寫,於 1969 年開發,用於解決該問題。 只要遠程計算機可以通過網絡訪問,它就允許管理員或任何其他授權人員連接到它並使用它,就像他們實際按下遠程鍵盤的鍵一樣。

SSH 是在 1995 年創建的,作為對 Telnet 和其他類似解決方案的直接響應。 這次的必要性是安全。 TELNET、rlogin、FTP 和那個時代的其他協議在設計時沒有考慮或認為需要安全。

SSH 代表安全shell ,因此您可以看到安全性從一開始就是一個指導原則。 如今,SSH 幾乎完全取代了 TELNET。

TELNET 是明文安全噩夢

TELNET 的一個大問題是它使用明文。 它不加密任何流量,包括用戶名和密碼。 它通過網絡傳輸的任何內容都可以通過數據包嗅探和讀取輕鬆捕獲。 即使在本地網絡上,這也是一個安全風險,除非您是唯一的用戶。 任何用戶都可以攔截 TELNET 流量並獲取他們無權訪問的登錄憑據。

如果遠程計算機不在現場,需要通過 Internet 建立連接才能訪問它,則問題會無可估量地放大。 TELNET 是那個時代的產物,公平地說,作者幾乎肯定不希望人們在 50 多年後,在今天截然不同的 IT 環境中使用它。

儘管 TELNET 在共同幫助我們走到今天的重要程序列表中名列前茅,但它不是我們在當今世界仍然應該使用的東西。

SSH 與 TELNET 有何不同?

從表面上看,TELNET 和 SSH 是對同一問題的兩種解決方案。 它們都允許您訪問遠程計算機上的終端窗口並向其發出命令。 但是因為 SSH 的開發比 TELNET 晚得多,所以問題得到了更徹底的理解,並且答案也得到了更好的設計。

TELNET 的設計考慮了專用網絡,但 SSH 的設計目的是應對公共網絡,以及在傳輸數據和進行遠程連接時維護隱私和安全的需要。

TELNET 使用端口 23,並且該端口號無法更改。 默認情況下,SSH 使用端口 22,但這可以配置和更改。 將 SSH 配置為使用不明顯的端口號會使攻擊者更難識別 SSH 端口。 如果可以識別 SSH 端口,則發起暴力攻擊是一件微不足道的事情,在這種攻擊中,通過自動化軟件依次嘗試從數據洩露中獲取的數千個密碼。

更好的是,SSH 可以完全免除密碼。 它可以使用公鑰加密對遠程計算機進行身份驗證。 密碼根本不會傳輸,因為不需要將它們發送到遠程計算機。 其數據加密和 SSH 密鑰身份驗證意味著 SSH 能夠在互聯網等不安全網絡上提供安全連接和通信。

事實上,SSH 可用於對不同的服務進行身份驗證,而不僅僅是運行 SSH 服務器的遠程計算機。 例如,您可以使用 SSH 而不是密碼訪問 GitHub、GitLab 和 BitBucket 託管的 Git 存儲庫。

你應該為 Git 使用 HTTPS 還是 SSH?
相關你應該為 Git 使用 HTTPS 還是 SSH?

通過 TELNET 使用 SSH 的另一個優點是 SSH 可以進行反向 SSH 隧道。 這需要服務器與客戶端計算機建立連接。 在本地用戶想要連接到服務器之前,該連接將被忽略。

當客戶端想要連接到服務器時,用戶與自己的計算機建立 SSH 連接。 SSH 將連接沿著已經建立的連接發送到服務器。 這在從服務器到客戶端的已加密連接中提供了一個專用隧道。

TELNET 的唯一優勢是它使用的帶寬更少。 但這不是帶寬稀缺的 1969 年,SSH 也不是一個帶寬大戶。

SSH 也有它的問題

儘管 SSH 在安全性方面優於 TELNET,但我們必須記住它仍然是軟件,軟件可能存在錯誤。 這些錯誤可能導致網絡犯罪分子可以利用的漏洞。 此外,加密標準和算法會隨著時間的推移而變化,並被取代。 與所有基於加密的軟件一樣,隨著 SSH 舊版本的老化,它們的安全性可能會降低。 這就是確保您使用最新版本的 SSH 很重要的原因。

大多數 Linux 計算機中使用的 SSH 版本是 OpenSSH,這是一種基於 OpenSSL 工具包和庫的 SSH 實現。 2012 年,OpenSSL 庫意外引入了一個漏洞,允許攻擊者請求 SSL 服務器的響應,並指定在響應中包含多少數據。

當實際響應需要不超過 64 字節時,他們可以請求(比如說)64KB 的響應。 該數據中的第一個字節序列將是真實的、預期的響應,然後是 OpenSSL 最近使用的內存中發生的任何內容。 該數據中包含的內容是幸運的,但它可能包含敏感信息,例如會話 cookie 和密碼,或其他允許攻擊者獲取私鑰的信息。

2014 年,該漏洞被發現後便被稱為 Heartbleed。 它很快就在軟件中修復了。 然而,漏洞並沒有在那時消失。 只有當所有運行易受攻擊軟件的計算機都安裝了修復版本時,該漏洞才會完全無效。 換句話說,當計算機已經打好補丁。 由於許多管理員反應遲鈍,因此固定軟件的採用速度很慢。

同樣令人擔憂的是,從 2012 年引入漏洞到 2014 年發現並解決漏洞之間的兩年時間。 在那兩年裡,每台運行易受攻擊的 OpenSSL 版本的 SSH 服務器都處於危險之中。

公平地說,這幾乎發生在十年前,從那時起已經有許多版本、改進、錯誤修復和代碼審查。

相關:保護 SSH 服務器的最佳方法

您應該使用 SSH 還是 TELNET?

很難想出您今天需要使用 TELNET 的原因。 這與說在任何情況下都可以安全使用 TELNET 是不一樣的。 在未連接到外部世界的獨立網絡中,並且您確定沒有人會通過數據包嗅探您的流量,您可以使用 TELNET。 但沒有理由這樣做。 安全權衡是不合理的。

SSH 更安全、更靈活——這是使用 SSH 而不是 TELNET 的優勢。 OpenSSH 實現對包括商業用途在內的所有用途都是免費的,並且適用於所有流行的操作系統。

相關:如何從 Windows、macOS 或 Linux 連接到 SSH 服務器