ssh

登入伺服器、執行指令,以及建立加密通道。

執行前須知

首次連線時,應透過可信管道核對主機金鑰指紋。-N 只建立轉送,不啟動遠端指令;下列前景通道可按 Ctrl+C 停止。-L 的目標由 SSH 伺服器解析及存取;-R 的目標由本機存取。遠端監聽仍受伺服器轉送政策約束,回環綁定亦受 GatewayPorts 影響。ExitOnForwardFailure 檢查初始轉送設定,不保證後續每個目標均可達。-D 提供 SOCKS,並非 VPN,須自行設定用戶端,支援時亦應設定遠端 DNS。詳細日誌可能含位址、使用者名稱與金鑰路徑,分享前請遮蔽敏感資訊。

使用範例

登入遠端帳號;首次連線會核對主機金鑰並進行身分驗證。

ssh alice@server.example.com

指定 2222 連接埠和身分檔案;IdentitiesOnly 限制提供的身分。

ssh -p 2222 -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes alice@server.example.com

透過跳板機存取目標伺服器(ProxyJump/-J)。

ssh -J alice@bastion.example.com alice@internal.example.com

本機轉送:本機 15432 連接埠經伺服器存取遠端資料庫。

ssh -N -L 127.0.0.1:15432:db.internal.example.com:5432 -o ExitOnForwardFailure=yes alice@server.example.com

遠端轉送:伺服器回環位址的 18080 連接埠存取本機 8080。

ssh -N -R 127.0.0.1:18080:127.0.0.1:8080 -o ExitOnForwardFailure=yes alice@server.example.com

在 127.0.0.1:1080 建立本機 SOCKS 監聽。

ssh -N -D 127.0.0.1:1080 -o ExitOnForwardFailure=yes alice@server.example.com

輸出詳細診斷日誌,將建立連線的逾時設為 10 秒。

ssh -vvv -o ConnectTimeout=10 alice@server.example.com

依序經過兩台跳板機連線;用戶端分別驗證每一跳,並須核對各主機金鑰。

ssh -J alice@jump1.example.com,alice@jump2.example.com alice@target.example.com

檢視 Host 和 Include 比對後生效的用戶端設定;輸出可能包含敏感連線資訊。

ssh -G alice@server.example.com

執行一條遠端命令後返回本機終端;請依遠端 shell 規則正確引用命令。

ssh alice@server.example.com 'uptime'

建立並重用連線、檢查狀態,再關閉主連線。確保 ~/.ssh 僅本人可存取;關閉主連線也會關閉依賴它的工作階段。

ssh -M -S ~/.ssh/securepipes-%C -o ControlPersist=10m -fN alice@server.example.com
ssh -S ~/.ssh/securepipes-%C alice@server.example.com
ssh -S ~/.ssh/securepipes-%C -O check alice@server.example.com
ssh -S ~/.ssh/securepipes-%C -O exit alice@server.example.com

列出可查詢類別、金鑰演算法及加密演算法;用戶端支援不代表伺服器接受。

ssh -Q help
ssh -Q key
ssh -Q cipher

查詢 known_hosts 的紀錄與指紋。僅在透過獨立可信管道確認金鑰變更後才刪除;主機與連接埠格式須正確。

ssh-keygen -F server.example.com -l
ssh-keygen -R server.example.com

為指令碼啟用非互動模式與連線逾時;須預先設定驗證和主機信任,遇到互動提示時會失敗。

ssh -o BatchMode=yes -o ConnectTimeout=10 alice@server.example.com

使用 ProxyCommand 和 -W 經跳板機連線;通常 ProxyJump 較簡單,須核對兩台主機金鑰。

ssh -o 'ProxyCommand=ssh -W %h:%p alice@bastion.example.com' alice@target.example.com

在伺服器回環位址建立 SOCKS 監聽連接埠。伺服器其他本機使用者或程序也可能存取;伺服器策略必須允許轉送。

ssh -N -R 127.0.0.1:1080 -o ExitOnForwardFailure=yes alice@server.example.com

設定加密的 SSH 保持連線探測與連線逾時,用來偵測無回應的對端,但不保證自動重連。

ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o ConnectTimeout=10 alice@server.example.com

參數與範例

-p port常用

連接到指定的伺服器連接埠。

範例
ssh -p 2222 alice@server.example.com
-i identity_file常用

使用指定的私鑰檔案;保護它並且永遠不要分享它。

範例
ssh -i ~/.ssh/id_ed25519 alice@server.example.com
-l login_name

指定遠端登入名。

範例
ssh -l alice server.example.com
-J destination常用

透過 SSH 跳轉主機連線。

範例
ssh -J alice@bastion.example.com alice@internal.example.com
-L address:port:host:hostport常用

將本機偵聽連接埠轉送至從 SSH 伺服器到達的目的地。

範例
ssh -N -L 127.0.0.1:15432:db.internal.example.com:5432 alice@server.example.com
-R address:port:host:hostport常用

將遠端偵聽連接埠轉送至從本機電腦到達的目標。伺服器策略可以限制綁定。

範例
ssh -N -R 127.0.0.1:18080:127.0.0.1:8080 alice@server.example.com
-D address:port常用

建立本機 SOCKS 偵聽器。配置每個客戶端以使用它;這不是 VPN。

範例
ssh -N -D 127.0.0.1:1080 alice@server.example.com
-N常用

不要運行遠端命令;僅用於轉發。

範例
ssh -N -D 127.0.0.1:1080 alice@server.example.com
-o option=value常用

為此呼叫設定 ssh_config 選項。轉發設定成功並不能保證稍後可以到達目的地。

範例
ssh -o ExitOnForwardFailure=yes alice@server.example.com
-F configfile

使用備用客戶端設定檔。

範例
ssh -F ~/.ssh/lab_config alice@server.example.com
-v / -vvv常用

列印診斷輸出;更多 v 字元可增加細節。日誌可能包含敏感的連線資訊。

範例
ssh -vvv alice@server.example.com
-4 / -6

分別僅使用 IPv4 或僅使用 IPv6。

範例
ssh -4 alice@server.example.com
-C

請求壓縮。它可能無法改善已經壓縮的流量。

範例
ssh -C alice@server.example.com
-T / -t

分別禁用或請求偽終端。

範例
ssh -t alice@server.example.com
-A

啟用代理轉發。受感染的遠端主機可以向轉送的代理請求簽署;僅與受信任的主機一起使用。

範例
ssh -A alice@server.example.com
-G

評估主機和匹配規則後列印有效的客戶端配置。

範例
ssh -G lab
-V

列印已安裝的 SSH 用戶端版本。

範例
ssh -V

權威參考

核對日期:2026 年 10 月 27 日