在 Warp 裡設定 SSH 捷徑:從 GCP 到 ~/.ssh/config 全紀錄
記錄怎麼從 GCP 主機開始,一路設定 SSH config 短別名,讓 Warp 不用再打又長又難記的連線指令。
每次要連公司或個人的雲端主機,都要打一串又長又難記的指令,像這樣:
ssh -i ~/.ssh/my_key user@203.0.113.10
打久了會想,這個真的沒辦法簡化嗎?答案是可以,而且不需要任何額外工具,只要善用 ~/.ssh/config 就好。這篇記錄我怎麼從 GCP 建主機開始,一路設定到在 Warp 裡打一個短短的別名就能連線。
Step 1:先確認主機資訊(以 GCP 為例)
如果你的主機是 GCP 的 Compute Engine VM,最省事的做法是用 gcloud CLI 讓它自動幫你產生 SSH config,不用自己手動兜參數。
先確認你有裝 gcloud CLI 並登入好帳號:
gcloud auth login
gcloud config set project <你的專案 ID>
列出目前有哪些 VM,順便看一下外部 IP:
gcloud compute instances list
輸出大概長這樣:
NAME ZONE MACHINE_TYPE STATUS EXTERNAL_IP
my-server asia-east1-b e2-small RUNNING 203.0.113.10
Step 2:讓 gcloud 幫你寫 SSH config
GCP 有一個很方便的指令,會自動幫你在 ~/.ssh/config 裡加上每一台 VM 的連線設定,包括金鑰、known_hosts 等等,完全不用自己手刻:
gcloud compute config-ssh
跑完之後打開 ~/.ssh/config,會看到類似這樣的區塊(以下是示意,不是真實內容):
# Google Compute Engine Section
#
# The following has been auto-generated by "gcloud compute config-ssh"
# ...
Host my-server.asia-east1-b.my-project-id
HostName 203.0.113.10
IdentityFile /Users/you/.ssh/google_compute_engine
UserKnownHostsFile=/Users/you/.ssh/google_compute_known_hosts
HostKeyAlias=compute.1234567890
IdentitiesOnly=yes
CheckHostIP=no
# End of Google Compute Engine Section
這個別名已經比原本一長串指令短很多了,但 my-server.asia-east1-b.my-project-id 這種自動產生的名字還是不太好打。而且註解也提醒了:不要手動改這個區塊裡面的內容,不然下次重跑 gcloud compute config-ssh 時可能會被覆蓋掉。
Step 3:在 config 裡加一個好記的短別名
解法很簡單:不要改自動產生的區塊,而是在區塊「外面」(例如緊接在 # End of Google Compute Engine Section 之後)自己手動加一段,把同樣的連線資訊複製一份,換成短別名:
# 常用主機短別名(手動加的,重跑 gcloud compute config-ssh 不會被洗掉)
Host prod
HostName 203.0.113.10
IdentityFile /Users/you/.ssh/google_compute_engine
UserKnownHostsFile=/Users/you/.ssh/google_compute_known_hosts
HostKeyAlias=compute.1234567890
IdentitiesOnly=yes
CheckHostIP=no
如果不是 GCP 主機,而是一般 VPS,設定會更單純,通常只要幾行:
Host myvps
HostName 203.0.113.20
User ubuntu
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
幾個欄位的意思:
- Host:你自己取的別名,之後打
ssh <這個名字>就會套用下面的設定。 - HostName:真正的 IP 或網域。
- User:登入的使用者名稱。
- IdentityFile:要用哪把私鑰登入。
- IdentitiesOnly yes:強制只用指定的這把 key 嘗試登入,避免 ssh-agent 裡塞太多把 key 時,連線卡在被伺服器拒絕好幾次之後才試到對的那把。
Step 4:驗證設定有沒有生效
改完 config 不用真的連線才能確認對不對,ssh 有個 -G 參數可以印出「這個別名實際上會套用哪些設定」,是乾跑模式:
ssh -G prod | grep -E "^(hostname|user|identityfile) "
看到印出正確的 hostname、user、identityfile,就代表 config 有解析成功。接著就可以直接:
ssh prod
不用再打完整的 IP 跟金鑰路徑。
Step 5:在 Warp 裡直接用
這步其實不用額外設定。Warp 本身沒有獨立的 SSH 連線管理介面,它就是讀你電腦上的 ~/.ssh/config。只要上面的別名設定好,Warp 會自動:
- 讓你在終端機裡直接打
ssh prod連線 - 在啟動畫面 / 側邊欄的 Connections 列表裡,自動列出 config 裡所有的 Host,可以直接點選連線,不用打字
所以真正的重點一直都是 ~/.ssh/config 寫得好不好,Warp 只是幫你把它視覺化而已。
小提醒:常見雷
~/.ssh資料夾權限要是700,私鑰檔案權限要是600,權限太開 ssh 會直接拒絕使用該金鑰。- 如果同一台主機在 config 裡出現兩次(例如自動產生的長別名 + 自己加的短別名),兩者要指向同一份
IdentityFile跟HostKeyAlias,不然 known_hosts 驗證可能會對不上。 - 改完 config 記得先用
ssh -G <別名>乾跑確認,再實際連線,比較不會卡在「連不上但不知道是設定錯還是網路問題」。
設定一次,之後不管是複製貼上長指令,還是每次都要回想 IP 跟金鑰放哪,都可以省下來。