介紹 SSH:設定遠端存取、使用金鑰
1. SSH 是什麼?
試想一下,你在地球的一端,而需要設置的服務器在另一端。學校 IT 專家的工作需要在教室之間跑來跑去——這可不是我們想要的情況。幸好有 SSH (Secure SHell),一種用來遠端控制服務器的工具。
SSH 是一種網絡協議,可以安全地連接到遠端計算機。連線過程使用加密,這意味著傳輸的資料受到保護,不會被外人窺探。SSH 替代了像 Telnet 那樣的過時方法,因為 Telnet 是明文傳輸資料(就像寄俄羅斯郵局的明信片)。
SSH 的優勢
- 安全性。SSH 使用加密技術,保護資料免受攔截。
- 靈活性。遠端控制服務器、傳輸文件,建立隧道——這些都可以通過 SSH 完成。
- 跨平臺。適用於 Linux、Windows(包括 WSL)和 MacOS。
現在,你已經了解了為什麼需要 SSH,我們來進行一些實際操作吧。
2. 安裝SSH客戶端
我們先從客戶端開始,這能讓你連接到伺服器。如果你正在用現代的Linux發行版,那麼很可能SSH客戶端已經安裝好了。我們來檢查一下:
ssh -V
你應該能看到SSH客戶端的版本資訊。如果沒找到這個命令,請安裝它(在Ubuntu和其他基於Debian的發行版上):
sudo apt update
sudo apt install openssh-client
在MacOS上,SSH客戶端是預裝的,而如果你在WSL上工作,安裝方式跟Linux一樣。
3. 通過 SSH 連接到遠端伺服器
連接到伺服器的命令如下:
ssh username@hostname
username
— 這是遠端伺服器上的用戶名。hostname
— 這是伺服器的 IP 地址或域名。
連接範例:
ssh student@192.168.1.10
如果一切配置正常,系統會要求輸入密碼。輸入密碼後,你就會進入伺服器的遠端控制台。恭喜啦,你已經邁出了成為“駭客電影裡的超級反派操作員”職業的一半路程。
4. SSH 伺服器的安裝與設置
安裝 SSH 伺服器
如果你在伺服器或想要連接的本機工作,需要安裝 SSH 伺服器。在 Ubuntu 中可以這樣做:
sudo apt update
sudo apt install openssh-server
檢查 SSH 服務狀態:
sudo systemctl status ssh
你應該會看到類似於 active (running)
的訊息。如果伺服器沒有運行,使用以下指令啟動:
sudo systemctl start ssh
sudo systemctl enable ssh
現在 SSH 伺服器已經準備好接收連接了。
設置 SSH 伺服器
SSH 伺服器的主要配置檔案是 /etc/ssh/sshd_config
。你可以用任何文字編輯器來編輯它,例如 nano
:
sudo nano /etc/ssh/sshd_config
注意以下參數:
Port 22
— SSH 運行的端口。PermitRootLogin no
— 禁止 root 使用者連接(建議保留no
以提高安全性)。PasswordAuthentication yes
— 允許密碼驗證連接。
更改參數後,重新啟動 SSH 伺服器:
sudo systemctl restart ssh
5. 使用金鑰認證
用密碼連線很方便,但不安全。最好的選擇是使用 SSH 金鑰。
生成 SSH 金鑰
在客戶端機器上執行以下命令:
ssh-keygen
腳本會要求輸入金鑰的保存路徑(默認是 ~/.ssh/id_rsa
)。可以直接按 Enter 接受默認值。接著會詢問你是否設置密碼短語。為了簡化操作最好留空(但這樣不太安全)。
執行命令後,金鑰文件將被創建:
id_rsa
— 私鑰(不要將它公開,就像你的專案未發佈之前的原始碼,特別是它已經積累技術債的時候)。id_rsa.pub
— 公鑰(這個可以用來連接)。
傳輸金鑰到伺服器
使用 ssh-copy-id
命令將公鑰傳到伺服器:
ssh-copy-id username@hostname
這會將你的公鑰添加到伺服器上的 ~/.ssh/authorized_keys
文件中。現在你可以不用輸入密碼就連接上去。
試試看:
ssh username@hostname
如果操作成功,系統不會要求輸入密碼。你的生活正式變得稍微輕鬆一點了。
SSH 與 WSL
如果你在 Windows 上使用 WSL,SSH 也可以運作。在 WSL 的終端中開啟並安裝 SSH 客戶端:
sudo apt update
sudo apt install openssh-client
接下來的步驟與 Linux 上的一樣。
6. 實作部分:在 localhost 上設定 SSH
練習時,你可以在同一網路中的兩台機器之間設定 SSH 連線,或者甚至在自己的電腦上(使用 localhost
作為地址)。
- 在一台機器上安裝 SSH 服務器和客戶端。
- 通過本地地址連線:
ssh your_user@localhost
- 按照前面的說明設定密鑰連線。
最終,你應該能連線而無需輸入密碼。
7. 配置和使用 SSH 別名
如果你經常連接到不同的服務器,可以透過將 SSH 配置添加到 ~/.ssh/config
文件中來簡化操作:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
現在你只需用以下指令連接:
ssh myserver
常見錯誤及其修復方法
錯誤 "Connection refused"。這表示 SSH 服務器未運行在遠端機器上。確認它已安裝並正在運行。
錯誤 "Permission denied"。可能你輸入了錯誤的密碼,或者金鑰配置有誤。檢查服務器上的
~/.ssh/authorized_keys
文件內容。錯誤 "No route to host"。檢查服務器是否能夠通過網路訪問(使用
ping
)。
現在你已經掌握了如何配置 SSH、使用金鑰以及避免常見問題的知識。這是一個非常強大的工具,無論是用於設定工作上的服務器還是在家管理 Raspberry Pi,都非常實用。
GO TO FULL VERSION