CodeGym /Adesua ahorow /Docker SELF /介紹 SSH:設定遠端存取、使用金鑰

介紹 SSH:設定遠端存取、使用金鑰

Docker SELF
等級 4 , 課堂 3
開放

介紹 SSH:設定遠端存取、使用金鑰

1. SSH 是什麼?

試想一下,你在地球的一端,而需要設置的服務器在另一端。學校 IT 專家的工作需要在教室之間跑來跑去——這可不是我們想要的情況。幸好有 SSH (Secure SHell),一種用來遠端控制服務器的工具。

SSH 是一種網絡協議,可以安全地連接到遠端計算機。連線過程使用加密,這意味著傳輸的資料受到保護,不會被外人窺探。SSH 替代了像 Telnet 那樣的過時方法,因為 Telnet 是明文傳輸資料(就像寄俄羅斯郵局的明信片)。

SSH 的優勢

  1. 安全性。SSH 使用加密技術,保護資料免受攔截。
  2. 靈活性。遠端控制服務器、傳輸文件,建立隧道——這些都可以通過 SSH 完成。
  3. 跨平臺。適用於 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 作為地址)。

  1. 在一台機器上安裝 SSH 服務器和客戶端。
  2. 通過本地地址連線:
ssh your_user@localhost
  1. 按照前面的說明設定密鑰連線。

最終,你應該能連線而無需輸入密碼。


7. 配置和使用 SSH 別名

如果你經常連接到不同的服務器,可以透過將 SSH 配置添加到 ~/.ssh/config 文件中來簡化操作:

Host myserver
    HostName 192.168.1.10
    User student
    IdentityFile ~/.ssh/id_rsa

現在你只需用以下指令連接:

ssh myserver

常見錯誤及其修復方法

  1. 錯誤 "Connection refused"。這表示 SSH 服務器未運行在遠端機器上。確認它已安裝並正在運行。

  2. 錯誤 "Permission denied"。可能你輸入了錯誤的密碼,或者金鑰配置有誤。檢查服務器上的 ~/.ssh/authorized_keys 文件內容。

  3. 錯誤 "No route to host"。檢查服務器是否能夠通過網路訪問(使用 ping)。


現在你已經掌握了如何配置 SSH、使用金鑰以及避免常見問題的知識。這是一個非常強大的工具,無論是用於設定工作上的服務器還是在家管理 Raspberry Pi,都非常實用。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION