在 Ubuntu 中配置 SSH 的完整指南
如今 SSH 已成為了登錄遠程伺服器的默認方式。
SSH 的全稱是 「 安全的 Shell 」,它功能強大、效率高,這個主流的網路協議用於在兩個遠程終端之間建立連接。讓我們不要忘記它名稱的「安全」部分,SSH 會加密所有的通信流量,以防止如劫持、竊聽等攻擊,同時提供不同的身份認證方式和無數個配置選項。
在這份新手指南中,你會學到:
- SSH 的基本概念
- 設置 SSH 伺服器(在你想要遠程登錄的系統上)
- 從客戶端(你的電腦)通過 SSH 連接遠程伺服器
SSH 的基本概念
在學習配置過程前,讓我們先了解一下 SSH 的全部基礎概念。
SSH 協議基於 客戶端-伺服器 (CS)架構。「 伺服器 」允許「 客戶端 」通過通信通道進行連接。該信道是經過加密的,信息交換通過 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 系統,以確保運行的是最新版本的程序。
sudo apt update && sudo apt upgrade
你要運行 SSH 伺服器的包由 OpensSSH 的 openssh-server
組件提供:
sudo apt install openssh-server
第二步:檢查伺服器狀態
當你下載並安裝完包後,SSH 伺服器應該已經運行了,但是為了確保萬無一失我們需要檢查一下:
service ssh status
你還可以使用 systemctl
命令:
sudo systemctl status ssh
你應該會看到這樣的結果,其中 active
是高亮的。輸入 q
退出該頁面。
如果你的結果中 SSH 服務沒有運行,使用這個命令運行它:
sudo systemctl enable --now ssh
第三步:允許 SSH 通過防火牆
Ubuntu 帶有名為 UFW( 簡單的防火牆 )的防火牆,這是管理網路規則的 iptables
的一個介面。如果啟動了防火牆,它可能會阻止你連接伺服器。
想要配置 UFW 允許你的接入,你需要運行如下命令:
sudo ufw allow ssh
UFW 的運行狀態可以通過運行 sudo ufw status
來檢查。
現在,我們的 SSH 伺服器已經開始運行了,在等待來自客戶端的連接。
連接遠程伺服器
你本地的 Linux 系統已經安裝了 SSH 客戶端。如果沒有,你可以在 Ubuntu 中使用如下命令安裝:
sudo apt install openssh-client
要連接你的 Ubuntu 系統,你需要知道它的 IP 地址,然後使用 ssh
命令,就像這樣:
ssh username@address
將 用戶名(username
)改為你的系統上的實際用戶名,並將 地址(address
)改為你伺服器的 IP 地址。
如果你 不知道 IP 地址,可以在伺服器的終端輸入 ip a
查看結果。應該會看到這樣的結果:
可以看到我的 IP 地址是 192.168.1.111
。讓我們使用 username@address
格式進行連接。
ssh team@192.168.1.111
這是你第一次連接到該 SSH 伺服器,它會請求添加主機。輸入 yes
並回車即可。
SSH 會立即告訴你該主機已經被永久添加了,並要求你輸入指定用戶的密碼,輸入密碼並再次按回車即可。
瞧,你遠程登錄了你的 Ubuntu 系統!
現在,你可以在遠程伺服器的終端里和尋常一樣工作了。
關閉 SSH 連接
你只需要輸入 exit
即可關閉連接,它會立馬關閉不需要確認。
在 Ubuntu 中關閉並禁止 SSH
如果你想要停止 SSH 服務,需要運行該命令:
sudo systemctl stop ssh
該命令會關閉 SSH 服務,直到重啟它或者系統重啟。想要重啟它,輸入:
sudo systemctl start ssh
現在,如果你想要禁止 SSH 跟隨系統啟動,使用該命令:
sudo systemctl disable ssh
該命令不會停止當前的 SSH 會話,只會在啟動的時候生效。如果你想要它跟隨系統啟動,輸入:
sudo systemctl enable 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 作為伺服器,允許來自你電腦的遠程安全的連接,便於你通過命令行開展工作。
此,我推薦以下文章:
遠程工作快樂!
via: https://itsfoss.com/set-up-ssh-ubuntu/
作者:Chris Patrick Carias Stas 選題:lujun9972 譯者:Donkey-Hao 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive