在 Ubuntu 中配置 SSH 的完整指南
如今 SSH 已成為了登錄遠程服務器的默認方式。
SSH 的全稱是 “安全的 ShellSecure Shell”,它功能強大、效率高,這個主流的網絡協議用于在兩個遠程終端之間建立連接。讓我們不要忘記它名稱的“安全”部分,SSH 會加密所有的通信流量,以防止如劫持、竊聽等攻擊,同時提供不同的身份認證方式和無數個配置選項。
在這份新手指南中,你會學到:
- SSH 的基本概念
- 設置 SSH 服務器(在你想要遠程登錄的系統上)
- 從客戶端(你的電腦)通過 SSH 連接遠程服務器
SSH 的基本概念
在學習配置過程前,讓我們先了解一下 SSH 的全部基礎概念。
SSH 協議基于客戶端-服務器server-client(CS)架構。“服務器Server”允許“客戶端Client”通過通信通道進行連接。該信道是經過加密的,信息交換通過 SSH 公私鑰進行管理。
Image credit: SSH
??OpenSSH?? 是在 Linux、BSD 和 Windows 系統上提供 SSH 功能的最流行的開源工具之一。
想要成功配置 SSH,你需要:
- 在作為服務器的機器上部署 SSH 服務器組件,它由?
?openssh-server?
? 包提供。 - 在你遠程訪問服務器的客戶端機器上部署 SSH 客戶端組件,它由?
?openssh-client?
? 包提供,大多數 Linux 和 BSD 發行版都已經預裝好了。
區分服務器和客戶端是十分重要的事情。或許你不想要你的 PC 作為 SSH 服務器,除非你有充分理由希望其他人通過 SSH 連接你的系統。
通常來說,你有一個專用的服務器系統。例如,一個 ??運行 Ubuntu 的樹莓派??。你可以 ??啟用樹莓派的 SSH 服務??,這樣你可以在你 PC 中的終端中,通過 SSH 控制并管理該設備。
有了這些信息,讓我們看看如何在 Ubuntu 上設置 SSH 服務器。
在 Ubuntu 服務器中配置 SSH
設置 SSH 并不復雜,只需要以下幾步。
前提
- 一個在服務器端擁有?
?sudo?
? 權限的用戶 - 可以下載所需包的互聯網連接
- 在你的網絡中至少有另一個系統。可以是局域網中的另一臺電腦,遠程服務器或者計算機中托管的虛擬機。
再次強調,在你想要通過 SSH 遠程登錄的系統上安裝 SSH 服務。
第一步:安裝所需包
讓我們從打開終端輸入一些必要命令開始。
注意,在安裝新的包或者軟件前,要 ??更新你的 Ubuntu 系統??,以確保運行的是最新版本的程序。
你要運行 SSH 服務器的包由 OpensSSH 的 ??openssh-server?
? 組件提供:
第二步:檢查服務器狀態
當你下載并安裝完包后,SSH 服務器應該已經運行了,但是為了確保萬無一失我們需要檢查一下:
你還可以使用 ??systemctl?
? 命令:
你應該會看到這樣的結果,其中 ??active?
? 是高亮的。輸入 ??q?
? 退出該頁面。
如果你的結果中 SSH 服務沒有運行,使用這個命令運行它:
第三步:允許 SSH 通過防火墻
Ubuntu 帶有名為 ??UFW??(簡單的防火墻Uncomplicated Firewall)的防火墻,這是管理網絡規則的 ??iptables?
? 的一個接口。如果啟動了防火墻,它可能會阻止你連接服務器。
想要配置 UFW 允許你的接入,你需要運行如下命令:
UFW 的運行狀態可以通過運行 ??sudo ufw status?
? 來檢查。
現在,我們的 SSH 服務器已經開始運行了,在等待來自客戶端的連接。
連接遠程服務器
你本地的 Linux 系統已經安裝了 SSH 客戶端。如果沒有,你可以在 Ubuntu 中使用如下命令安裝:
要連接你的 Ubuntu 系統,你需要知道它的 IP 地址,然后使用 ??ssh?
? 命令,就像這樣:
將 用戶名(??username?
?)改為你的系統上的實際用戶名,并將 地址(??address?
?)改為你服務器的 IP 地址。
如果你 ??不知道 IP 地址??,可以在服務器的終端輸入 ??ip a?
? 查看結果。應該會看到這樣的結果:
Using “ip a” to find the IP address
可以看到我的 IP 地址是 ??192.168.1.111?
?。讓我們使用 ??username@address?
? 格式進行連接。
這是你第一次連接到該 SSH 服務器,它會請求添加主機。輸入 ??yes?
? 并回車即可。
First time connecting to the server
SSH 會立即告訴你該主機已經被永久添加了,并要求你輸入指定用戶的密碼,輸入密碼并再次按回車即可。
Host added, now type in the password
瞧,你遠程登錄了你的 Ubuntu 系統!
Connected!
現在,你可以在遠程服務器的終端里和尋常一樣工作了。
關閉 SSH 連接
你只需要輸入 ??exit?
? 即可關閉連接,它會立馬關閉不需要確認。
Closing the connection with “exit”
在 Ubuntu 中關閉并禁止 SSH
如果你想要停止 SSH 服務,需要運行該命令:
該命令會關閉 SSH 服務,直到重啟它或者系統重啟。想要重啟它,輸入:
現在,如果你想要禁止 SSH 跟隨系統啟動,使用該命令:
該命令不會停止當前的 SSH 會話,只會在啟動的時候生效。如果你想要它跟隨系統啟動,輸入:
其他 SSH 客戶端
從 Linux 到 macOS,大多數 *nix 系統中都有 ??ssh?
? 工具,但這并不是唯一的選項,這里有幾個可以在其他操作系統中使用的客戶端:
- ??PuTTY?? 是一個自由開源的 Windows 系統上的 SSH 客戶端。它功能強大并且簡單易用。如果你從 Windows 系統上連接你的 Ubuntu 服務器,PuTTY 是最好的選擇。(LCTT 譯注:切記從官方網站下載。)
- 對安卓用戶來說,??JuiceSSH?? 是十分優秀的工具。如果你在旅途中需要一個移動客戶端來連接你的 Ubuntu 系統,我強烈建議你試試 JuiceSSH。它已經出現了將近 10 年,并且可以免費使用。
- 最后是??Termius??,它可用于 Linux、Windows、macOS、iOS 和安卓。它有一個免費版本和幾個付費選項。如果你運行大量服務器并進行共享連接的團隊合作,那么 Termius 對你來說是一個不錯的選擇。
總結
在這份指導中,你可以在 Ubuntu 系統中設置 SSH 作為服務器,允許來自你電腦的遠程安全的連接,便于你通過命令行開展工作。
此,我推薦以下文章:
遠程工作快樂!