1、基本知識

程序三两行發表於2024-02-27

SSH 是 Linux 系統的登入工具,現在廣泛用於伺服器登入和各種加密通訊。

本教程介紹 SSH(主要是它的實現 OpenSSH)的概念和基本用法,也可以當作手冊查詢。

Copyright © 來自網道專案

SSH 基本知識

SSH(Secure Shell 的縮寫)是一種網路協議,用於加密兩臺計算機之間的通訊,並且支援各種身份驗證機制。

實務中,它主要用於保證遠端登入和遠端通訊的安全,任何網路服務都可以用這個協議來加密。

SSH 是什麼

歷史上,網路主機之間的通訊是不加密的,屬於明文通訊。這使得通訊很不安全,一個典型的例子就是伺服器登入。登入遠端伺服器的時候,需要將使用者輸入的密碼傳給伺服器,如果這個過程是明文通訊,就意味著傳遞過程中,線路經過的中間計算機都能看到密碼,這是很可怕的。

SSH 就是為了解決這個問題而誕生的,它能夠加密計算機之間的通訊,保證不被竊聽或篡改。它還能對操作者進行認證(authentication)和授權(authorization)。明文的網路協議可以套用在它裡面,從而實現加密。

歷史

1995年,芬蘭赫爾辛基工業大學的研究員 Tatu Ylönen 設計了 SSH 協議的第一個版本(現稱為 SSH 1),同時寫出了第一個實現(稱為 SSH1)。

當時,他所在的大學網路一直髮生密碼嗅探攻擊,他不得不為伺服器設計一個更安全的登入方式。寫完以後,他就把這個工具公開了,允許其他人免費使用。

SSH 可以替換 rlogin、TELNET、FTP 和 rsh 這些不安全的協議,所以大受歡迎,使用者快速增長,1995年底已經發展到五十個國家的20,000個使用者。SSH 1 協議也變成 IETF 的標準文件。

1995年12月,由於客服需求越來越大,Tatu Ylönen 就成立了一家公司 SCS,專門銷售和開發 SSH。這個軟體的後續版本,逐漸從免費軟體變成了專有的商業軟體。

SSH 1 協議存在一些安全漏洞,所以1996年又提出了 SSH 2 協議(或者稱為 SSH 2.0)。這個協議與1.0版不相容,在1997年進行了標準化,1998年推出了軟體實現 SSH2。但是,官方的 SSH2 軟體是一個專有軟體,不能免費使用,而且 SSH1 的有些功能也沒有提供。

1999年,OpenBSD 的開發人員決定寫一個 SSH 2 協議的開源實現,這就是 OpenSSH 專案。該專案最初是基於 SSH 1.2.12 版本,那是當時 SSH1 最後一個開源版本。但是,OpenSSH 很快就完全擺脫了原始的官方程式碼,在許多開發者的參與下,按照自己的路線發展。OpenSSH 隨 OpenBSD 2.6 版本一起提供,以後又移植到其他作業系統,成為最流行的 SSH 實現。目前,Linux 的所有發行版幾乎都自帶 OpenSSH。

現在,SSH-2 有多種實現,既有免費的,也有收費的。本書的內容主要是針對 OpenSSH。

SSH 架構

SSH 的軟體架構是伺服器-客戶端模式(Server - Client)。在這個架構中,SSH 軟體分成兩個部分:向伺服器發出請求的部分,稱為客戶端(client),OpenSSH 的實現為 ssh;接收客戶端發出的請求的部分,稱為伺服器(server),OpenSSH 的實現為 sshd。

本教程約定,大寫的 SSH 表示協議,小寫的 ssh 表示客戶端軟體。

另外,OpenSSH 還提供一些輔助工具軟體(比如 ssh-keygen 、ssh-agent)和專門的客戶端工具(比如 scp 和 sftp),這個教程也會予以介紹。