上一篇文章中,我們探討了 ssh 指令的基本用法與實用選項。然而,每次都手動輸入複雜的 IP、使用者名稱與埠號,實在是相當麻煩。\n此時,SSH Config 檔案 的使用能一次性解決這些煩惱。就像收藏夾一樣,將常用的伺服器連線資訊存起來,並以 別名(Alias) 方式快速連線。\n\n我自己在不知 Config 檔案存在的「完全新手」時期,曾經把常用的指令直接寫進 .bashrc 的 alias,隨後才發現自己使用了如此笨拙的方法。\n\n
\n\n---\n\n## SSH Config 檔案是什麼? {#sec-481141e7802b}\n\nSSH Config 檔案 是用來自訂 SSH 客戶端行為的設定檔。將特定主機的連線資訊(使用者名稱、埠號、使用的金鑰檔案等)預先存入,之後只需使用簡短的別名即可連線。\n\n 位置: 通常位於使用者主目錄下的 .ssh 資料夾,檔名為 config。若是第一次安裝 SSH,該檔案可能不存在,這時就需要自行建立。\n \n 檔案建立: 若 ~/.ssh/config 不存在,請自行建立,並務必設定權限為 600。\n\nbash\n\ttouch ~/.ssh/config\n\tchmod 600 ~/.ssh/config # 為安全起見,必須設定權限!\n\t\n\n---\n\n## Config 檔案寫法規則 {#sec-a6ba2fff88f5}\n\nConfig 檔案是一個簡單的文字檔,每個主機的設定以 Host 關鍵字開始,並以區塊形式編寫。\n\n#### 基本結構\n\n\nHost [別名]\n [選項1] [值1]\n [選項2] [值2]\n ...\n\n\n Host [別名]:此區塊的起始,定義您將使用的 別名(Alias)。別名也可以直接寫入實際主機位址(IP 或網域),亦可使用萬用字元(*、?)。\n 縮排: Host 下的選項必須縮排。可使用空格或 Tab,保持一致即可。\n 選項: Host 下列出的各項 SSH 選項,與 ssh -選項 的用法相同。\n\n### 常用選項 {#sec-488803d47bdf}\n\n| | | |
| --- | --- | --- |
| 選項 | 說明 | 範例值 |
| 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(使用 ssh-agent 時) | yes |
| StrictHostKeyChecking | 是否嚴格檢查主機金鑰(建議 yes) | no(測試時臨時使用) |
| PortForwarding | 是否允許埠轉發 | yes |
| LocalForward | 本機埠轉發設定(等同 -L) | 8080 localhost:80 |
| ServerAliveInterval | 檢查伺服器存活的間隔(秒) | 60(防止斷線) |
| ServerAliveCountMax | 失敗時重試次數 | 3 |
\n---\n\n## SSH Config 檔案寫法範例 {#sec-92c9daf3ee29}\n\n以下示範如何將常用伺服器加入 ~/.ssh/config。\n\nini\n# 第一台伺服器:網頁伺服器(別名:webserver)\nHost webserver\n HostName 192.168.1.100\n User ubuntu\n Port 2222\n IdentityFile ~/.ssh/id_ed25519_webserver # 網頁伺服器專用金鑰\n\n# 第二台伺服器:開發伺服器(別名:devbox)\nHost devbox\n HostName dev.example.com\n User developer\n IdentityFile ~/.ssh/id_rsa_dev # RSA 金鑰\n # 連線時將本機 8000 埠轉發至遠端 80 埠\n LocalForward 8000 localhost:80 \n\n# 第三台伺服器:所有 AWS EC2 伺服器(別名:aws-*)\nHost aws-*\n User ec2-user\n IdentityFile ~/.ssh/aws_ec2_key.pem\n # 連線不斷線,定期送訊號\n ServerAliveInterval 60\n ServerAliveCountMax 3\n\n# 特定 IP 範圍的通用設定(別名:10.0.0.*)\nHost 10.0.0.*\n User admin\n Port 22\n\n\n說明:\n\n webserver:以 ubuntu 使用者、2222 埠號、id_ed25519_webserver 金鑰連線至 192.168.1.100。\n devbox:以 developer 使用者、id_rsa_dev 金鑰連線至 dev.example.com,並將本機 8000 埠轉發至遠端 80 埠。\n aws-*:所有以 aws- 開頭的別名皆套用此設定。\n 10.0.0.*:對於 10.0.0.x 形式的 IP,預設使用 admin 使用者與 22 埠。\n\n> 實際上,我很少使用萬用字元 * 的方式;通常會為每台伺服器單獨設定,方便管理。若同一台伺服器需不同設定,則可新增多個別名,像餐廳點餐一樣選擇。\n\n---\n\n
\n\n## Config 檔案使用方法 {#sec-e176d1ccdfce}\n\n設定完成後,實際連線變得更簡單。以下以範例為例。\n\n### 1. 以別名連線 {#sec-b0810f8f4908}\n\n只需使用別名即可執行 SSH 連線。\n\n 使用 webserver 別名:\n\nbash\n ssh webserver\n Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':\n ubuntu@webserver-ip:~ $\n\n\n> 這條指令實際上等同於 ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100。\n\n 使用 devbox 別名:\n\nbash\n ssh devbox\n Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':\n developer@devbox-domain:~ $\n\n\n> 同時連線時,本機 8000 埠會轉發至 dev.example.com 的 80 埠。\n\n---\n\n## Config 檔案使用的優點 {#sec-2c234f7e8725}\n\n 便利性: 用簡短別名取代冗長複雜的 SSH 指令,減少輸入錯誤並節省時間。\n 生產力: 快速切換常用伺服器,提升工作效率。\n 易於管理: 所有連線設定集中於一個檔案,維護更方便;若伺服器 IP 變更,只需更新 Config 即可。\n 安全性:* 重要資訊(如金鑰路徑)不會留在指令歷史中。\n\n---\n\n## 結語 {#sec-9c659c3d712e}\n\nSSH Config 檔案是所有使用 SSH 的開發者與系統管理員不可或缺的工具。透過此檔案,您可以將 SSH 連線體驗變得更順暢、更高效。打開 ~/.ssh/config,為自己打造專屬別名吧!\n\n若想了解更多 SSH 相關內容,請在右側搜尋框輸入「ssh」即可找到相關文章。\n\n如有任何疑問,歡迎在下方留言提問!
SSH 連線自動化的第一步:掌握 config 檔案 [ r1 ]
2026-02-04 01:48:41
whitedec
🛠️ Full revision completed.