上一篇文章中,我們探討了 ssh 指令的基本用法與實用選項。然而,每次手動輸入複雜的 IP、使用者名稱與埠號,實在是相當麻煩。此時,SSH Config 檔案 的使用能一次性解決這些痛點。它就像瀏覽器的書籤,將常用的伺服器連線資訊存放起來,並以 別名(Alias) 方式快速呼叫。
我自己在不知 config 檔案存在的「完全新手」時期,曾經把常用的 ssh 指令直接寫進 .bashrc 的 alias,實在是愚笨。後來學會 config 檔案後,才驚覺自己之前的做法有多麼低效。

SSH Config 檔案是什麼?
SSH Config 檔案 是用來自訂 SSH 客戶端行為的設定檔。將特定主機的連線資訊(使用者名稱、埠號、使用的金鑰檔案等)預先存放,之後只需使用簡短的別名即可連線。
- 位置: 通常位於使用者主目錄下的
.ssh資料夾,檔名為config。若是第一次安裝 ssh,可能尚未存在,需要自行建立。 - 檔案建立: 若
~/.ssh/config不存在,請自行建立,並確保權限設為 600。
touch ~/.ssh/config
chmod 600 ~/.ssh/config # 安全起見,必須設定正確權限
Config 檔案寫法規則
Config 檔案是一個簡單的文字檔,每個主機的設定以 Host 關鍵字開頭,並以區塊形式編寫。
基本結構
Host [別名]
[選項1] [值1]
[選項2] [值2]
...
Host [別名]:標示區塊開始,並定義將在 ssh 指令中使用的別名。別名也可以直接寫實際主機位址(IP 或域名),甚至使用萬用字元(*、?)。- 縮排:
Host下的選項必須縮排,空格或 tab 均可,但保持一致性最佳。 - 選項: 在
Host區塊內列出連線時使用的各種 SSH 選項,與ssh -選項的用法相同。
常用選項
| 選項 | 說明 | 範例值 |
|---|---|---|
HostName |
真實連線的伺服器 IP 或域名 | 192.168.1.100 或 example.com |
User |
連線時使用的使用者帳號 | ubuntu、ec2-user、root |
Port |
伺服器 SSH 埠號(預設 22) | 2222 |
IdentityFile |
連線時使用的私鑰檔案路徑 | ~/.ssh/id_ed25519_myserver |
ForwardAgent |
啟用 SSH Agent Forwarding | yes |
StrictHostKeyChecking |
是否嚴格檢查主機金鑰(建議 yes) |
no(測試時臨時使用) |
PortForwarding |
是否允許埠轉發 | yes |
LocalForward |
本機埠轉發(等同 -L) |
8080 localhost:80 |
ServerAliveInterval |
伺服器存活檢查間隔(秒) | 60 |
ServerAliveCountMax |
失敗時重試次數 | 3 |
SSH Config 檔案範例
以下示範如何為常用伺服器新增設定。
# 第一台伺服器:網頁伺服器(別名:webserver)
Host webserver
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_webserver # 使用專屬金鑰
# 第二台伺服器:開發伺服器(別名:devbox)
Host devbox
HostName dev.example.com
User developer
IdentityFile ~/.ssh/id_rsa_dev # RSA 金鑰
# 連線時將本機 8000 埠轉發至遠端 80 埠
LocalForward 8000 localhost:80
# 第三台伺服器:所有 AWS EC2 伺服器(別名:aws-*)
Host aws-*
User ec2-user
IdentityFile ~/.ssh/aws_ec2_key.pem
# 連線不斷斷時定期發送訊號
ServerAliveInterval 60
ServerAliveCountMax 3
# 特定 IP 範圍的通用設定(別名:10.0.0.*)
Host 10.0.0.*
User admin
Port 22
說明:
webserver:以ubuntu使用者、2222埠、id_ed25519_webserver金鑰連線至192.168.1.100。devbox:以developer使用者、id_rsa_dev金鑰連線至dev.example.com,並將本機 8000 埠轉發至遠端 80 埠。aws-*:所有以aws-開頭的別名皆使用ec2-user與aws_ec2_key.pem,並啟用存活訊號。10.0.0.*:對於10.0.0.x形式的 IP,預設使用admin使用者與 22 埠。
以上範例僅示範萬用字元的使用,實務上我較偏好 1:1 的設定,方便管理。若同一台伺服器需不同設定,可新增多個別名,像餐廳點餐一樣選擇。

如何使用 Config 檔案
設定完成後,實際連線變得極為簡單。以下以範例為例說明。
1. 以別名連線
只需輸入別名即可。
- 使用
webserver別名:
ssh webserver
Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
ubuntu@webserver-ip:~ $
這條指令實際上等同於
ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100。
- 使用
devbox別名:
ssh devbox
Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
developer@devbox-domain:~ $
同時連線時,本機 8000 埠會轉發至
dev.example.com的 80 埠。
Config 檔案的優點
- 便利性: 用簡短別名取代冗長指令,減少輸入錯誤與時間成本。
- 生產力: 快速切換常用伺服器,提升工作效率。
- 易於管理: 所有連線設定集中於一個檔案,維護更方便。若伺服器 IP 變更,只需更新 config 即可。
- 安全性: 重要資訊(如金鑰路徑)不會留在指令歷史中。
結語
SSH Config 檔案是每位使用 SSH 的開發者與系統管理員必備的工具。透過它,你可以將 SSH 連線體驗變得更順暢、更高效。快打開 ~/.ssh/config,為自己打造專屬別名吧!
若想了解更多 SSH 相關內容,請在右側搜尋框輸入「ssh」即可找到相關文章。
如有任何疑問,歡迎在下方留言討論!