Linux SSH 常用指令手冊:伺服器遠端管理必備技巧大全

整理 Linux VPS 維運最常用的 SSH 指令與技巧,涵蓋 port forwarding、SCP/rsync 檔案傳輸、SSH config 進階設定、SSH tunnel 與多主機跳板連線。

SSHLinux指令VPS伺服器管理手冊金鑰SCPSFTP教學遠端登入rsyncport forwardingSSH tunnelProxyJump

SSH 不只是「連上去」而已。真正好用的 SSH 會包含別名、金鑰、port forwarding、config 管理與安全習慣。這篇會把實戰裡最值得先學的技巧整理給你。

你如果不想每次都只是照著別人的畫面一步一步跟著按,卻不知道自己到底改了什麼,這篇會比較適合你。重點不是讓你背流程,而是讓你下次遇到類似情況時,還知道該怎麼自己判斷。

你會學到什麼

  • 把 SSH 從單一指令升級成可長期使用的工具。
  • 知道常見 SSH 選項在做什麼。
  • 學會 port forwarding 和 SSH tunnel 的實際用途。
  • 減少每次連線都要重新輸長指令的摩擦。
  • 掌握 rsync 高效傳檔技巧。

什麼情況最適合先看這篇

  • 第一次自己管理 Linux 主機,想把操作做穩而不是只會貼指令的人
  • 你現在正要處理「Linux SSH 常用指令手冊」這類操作
  • 你希望做完之後不只功能能用,連驗證與排錯也有概念

開始前先確認

  • 先確認你已能正常 SSH 進主機。
  • 如果你有多台主機,先整理命名方式。
  • 準備好金鑰與本機 ~/.ssh/config 使用習慣。

先提醒你一件事

VPS 最怕的不是不會下指令,而是你不知道指令會影響到哪個服務、哪個設定檔、哪個對外連線。

詳細教學與操作步驟

本文為你整理了在 VPS 伺服器管理中最常用的 SSH 指令與技巧,無論是基礎連線、檔案傳輸還是安全性設定,都能在這份手冊中找到對應的指令。

一、 基礎連線指令

# 一般登入
ssh 使用者名稱@伺服器IP

# 指定連接埠登入
ssh -p 連接埠 使用者名稱@伺服器IP

# 登入後立即執行指令(不進入互動模式)
ssh root@伺服器IP "ls -l /tmp"

# 執行多個指令
ssh root@伺服器IP "uptime && df -h && free -h"

# 以 verbose 模式連線(排錯用)
ssh -vvv root@伺服器IP

二、 檔案傳輸 -- SCP

不需要開啟 FTP 服務,直接透過 SSH 通道安全地傳輸檔案:

# 上傳檔案
scp 本機路徑 遠端使用者@伺服器IP:遠端路徑

# 下載檔案
scp 遠端使用者@伺服器IP:遠端路徑 本機路徑

# 上傳整個目錄
scp -r ./my_folder root@伺服器IP:/home/root/

# 指定 port
scp -P 2222 file.txt root@伺服器IP:/tmp/

# 限制傳輸速度(單位 Kbit/s)
scp -l 10000 大檔案.tar.gz root@伺服器IP:/tmp/

三、 檔案傳輸 -- rsync(推薦)

rsync 比 SCP 更強大,支援增量傳輸(只傳有變動的部分),大量檔案時效率差非常多:

# 基本同步(本機 → 遠端)
rsync -avz ./local_folder/ root@伺服器IP:/remote_folder/

# 遠端 → 本機
rsync -avz root@伺服器IP:/remote_folder/ ./local_folder/

# 顯示傳輸進度
rsync -avz --progress ./data/ root@伺服器IP:/data/

# 刪除目標端多餘的檔案(保持完全同步)
rsync -avz --delete ./local/ root@伺服器IP:/remote/

# 排除特定檔案或目錄
rsync -avz --exclude='*.log' --exclude='node_modules/' \
  ./project/ root@伺服器IP:/var/www/project/

# 模擬執行(看看會做什麼,但不真的傳)
rsync -avzn ./local/ root@伺服器IP:/remote/

# 指定 SSH port
rsync -avz -e "ssh -p 2222" ./data/ root@伺服器IP:/data/

四、 SSH 金鑰 (Key) 管理

這是最安全的登入方式,強烈建議所有 侃瑞科技 VPS 用戶都應使用:

# 產生金鑰(推薦 ED25519)
ssh-keygen -t ed25519 -C "your@email.com"

# 如果需要兼容舊系統,用 RSA 4096
ssh-keygen -t rsa -b 4096 -C "your@email.com"

# 上傳金鑰到伺服器
ssh-copy-id root@伺服器IP

# 上傳到自訂 port 的伺服器
ssh-copy-id -p 2222 root@伺服器IP

# 查看金鑰指紋
ssh-keygen -l -f ~/.ssh/id_ed25519.pub

# 從 known_hosts 移除舊記錄
ssh-keygen -R 伺服器IP

管理多把金鑰:

# 為不同用途產生不同金鑰
ssh-keygen -t ed25519 -f ~/.ssh/kanrays_prod -C "prod-server"
ssh-keygen -t ed25519 -f ~/.ssh/kanrays_staging -C "staging-server"

在 SSH config 中指定對應的金鑰:

Host prod
    HostName 123.45.67.89
    User deploy
    IdentityFile ~/.ssh/kanrays_prod

Host staging
    HostName 98.76.54.32
    User deploy
    IdentityFile ~/.ssh/kanrays_staging

五、 SSH Config 進階設定

~/.ssh/config 的完整範例:

# 全域設定
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
    AddKeysToAgent yes
    IdentitiesOnly yes

# 正式站 — 透過跳板機連線
Host prod
    HostName 10.0.0.5
    User deploy
    ProxyJump bastion

# 跳板機
Host bastion
    HostName 公網IP
    User admin
    Port 2222
    IdentityFile ~/.ssh/bastion_key

# 共用同一個連線(加速多次 SSH 操作)
Host fast-*
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

建立 socket 目錄:

mkdir -p ~/.ssh/sockets

**ControlMaster 的效果:**第一次 SSH 連線後,後續的 SSH、SCP、rsync 都會重用同一個 TCP 連線,速度快很多。

六、 Port Forwarding(SSH 隧道)

這是 SSH 最強大但最容易被忽略的功能。

Local Port Forwarding -- 存取遠端的內部服務:

# 把遠端的 MySQL (3306) 映射到本機的 13306
ssh -L 13306:localhost:3306 root@伺服器IP

# 然後你就可以在本機用 MySQL 工具連線
mysql -h 127.0.0.1 -P 13306 -u root -p

# 把遠端的 phpMyAdmin 映射到本機
ssh -L 8888:localhost:80 root@伺服器IP
# 瀏覽器開 http://localhost:8888

Remote Port Forwarding -- 讓遠端存取你的本機服務:

# 把本機的 3000 port 暴露到遠端的 9000
ssh -R 9000:localhost:3000 root@伺服器IP

Dynamic Port Forwarding(SOCKS Proxy):

# 建立 SOCKS5 代理
ssh -D 1080 root@伺服器IP

# 瀏覽器設定 SOCKS proxy: localhost:1080
# 所有流量都會經過 VPS

背景執行隧道:

# -f 進入背景,-N 不執行遠端指令
ssh -fN -L 13306:localhost:3306 root@伺服器IP

# 查看背景隧道
ps aux | grep ssh

# 結束背景隧道
kill $(ps aux | grep "ssh -fN" | grep -v grep | awk '{print $2}')

七、 跳板機連線 (ProxyJump)

當你的 VPS 在內網,需要先連到跳板機:

# 命令列方式
ssh -J bastion_user@跳板IP 目標user@內網IP

# 更好的方式:寫在 config 裡(見上方 config 範例)
ssh prod

八、 安全性設定

為了防止攻擊,你可以修改 /etc/ssh/sshd_config 檔案:

# 關閉 Root 登入
PermitRootLogin no

# 關閉密碼登入(僅限金鑰)
PasswordAuthentication no

# 指定允許的使用者
AllowUsers deploy admin

# 限制登入嘗試次數
MaxAuthTries 3

# 關閉 X11 Forwarding(如果不需要)
X11Forwarding no

# 設定連線逾時
ClientAliveInterval 300
ClientAliveCountMax 2

修改後記得重啟 SSH:systemctl restart sshd

常見問題

Q:連線時顯示 Host key verification failed? 這代表伺服器的指紋與你電腦記錄的不符。如果伺服器剛重灌過,這是正常的。你可以手動刪除舊記錄:ssh-keygen -R 伺服器IP。更多疑難排解可參考我們的 SSH 連線詳細教學

Q:如何保持 SSH 連線不中斷?~/.ssh/config 加入 ServerAliveInterval 60,讓系統每分鐘自動發送一個信號保持連線活躍。或者使用 tmux,即使 SSH 斷線,你的工作也不會中斷。

Q:SCP 和 rsync 該用哪個? 小量檔案用 SCP 方便,大量檔案或需要增量同步用 rsync。rsync 可以中斷後續傳、排除特定檔案,功能強大許多。正式部署建議統一用 rsync。

Q:SSH 連線很慢怎麼辦?

# 關閉 DNS 反查(最常見的原因)
# 在 /etc/ssh/sshd_config 加入
UseDNS no

# 使用壓縮(低頻寬環境有幫助)
ssh -C root@伺服器IP

# 使用 ControlMaster 加速重複連線

做完後怎麼確認自己真的有設對

  • 確認 SSH config 中的每台主機都能正常連線。
  • ssh -vvv verbose 模式確認使用的是預期的金鑰。
  • 測試 SCP 或 rsync 檔案傳輸正常。
  • 如果設了 port forwarding,確認本機可以存取遠端服務。

這一題最常踩的坑

  • 所有主機都共用同一把金鑰,管理很容易失控。
  • 沒用 config 管理時,時間一久很難維護。
  • 不理解 port forwarding 的作用就亂開,可能增加風險。
  • rsync 的 --delete 用錯方向,把目標端的檔案刪光。
  • 金鑰檔案權限太寬鬆(應該是 600),SSH 會拒絕使用。

如果你要往下一步走

如果你需要背景長時間工作流程,下一篇很適合接 tmux 教學。想了解更多系統管理技巧,看 Linux 系統維護常用指令大全。如果你準備開始自己架服務,可以直接對照侃瑞的 VPS 方案與價格 選環境。

需要主機來實作?

侃瑞科技提供 cPanel 虛擬主機與 VPS,教學裡的操作開箱即用。

查看方案 →
LINE 諮詢