Skip to content

用 SSH config alias 下載 VPS 檔案

2026年3月15日 1 分鐘
TL;DR 設定好 SSH config 後,scp 可以直接用 alias,不用打完整 IP

TL;DR

設定好 ~/.ssh/config 之後,scp 可以直接用 alias,不用每次打 IP、port、user。

情境

要從 VPS 把檔案拉到本機,最直覺的方式是 scp

scp -P 22 root@your-vps-ip:/path/to/file .

但如果 VPS 不只一台,或是 port 不是預設的 22,每次都要記 IP 和 port 很麻煩。

解法

~/.ssh/config 可以幫每台主機設定 alias,把連線資訊集中管理:

Host daodao
    HostName your-vps-ip
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa

設定好之後,ssh daodao 就等於 ssh -p 22 -i ~/.ssh/id_rsa root@your-vps-ip

重點是 scprsync 也認這個 config,所以可以直接用 alias:

# 下載單一檔案
scp daodao:/path/to/file .

# 下載整個目錄
scp -r daodao:/path/to/dir ./local-destination

如果要傳大檔案或目錄,建議用 rsync,它支援增量傳輸和斷點續傳:

rsync -avz daodao:/path/to/dir ./local-destination
  • -a:保留檔案權限、時間戳等 metadata
  • -v:顯示傳輸進度
  • -z:傳輸時壓縮,網路慢的時候有幫助

進階:從 Docker 容器拿檔案

如果檔案在 VPS 上的 Docker 容器裡,要多一個步驟。以 nginx 容器為例:

方法一:分兩步

# 先把檔案從容器複製到 VPS
ssh daodao "docker cp nginx:/etc/nginx/nginx.conf /tmp/nginx.conf"

# 再從 VPS 拉到本機
scp daodao:/tmp/nginx.conf .

方法二:一行搞定

ssh daodao "docker cp nginx:/etc/nginx/nginx.conf /tmp/nginx.conf" && scp daodao:/tmp/nginx.conf .

docker cp <容器名>:<容器內路徑> <VPS路徑> 負責把檔案從容器搬出來,之後就跟一般 VPS 檔案一樣用 scp 下載。

學到的事

scprsync 都認 ~/.ssh/config,設一次 alias,之後不管是 ssh 連線還是傳檔都能用同一個名字。容器內的檔案先用 docker cp 搬出來,再用同樣的流程下載。

參考資料