SSH 不只拿來登入,也常用於跳板、檔案傳輸與暫時性通道。先把主機別名、使用者、金鑰與 host key 管好,比每次複製一長串參數可靠。
登入與連線參數
登入遠端主機OpenSSH
使用預設 TCP 22 與可用認證方式。
指定 SSH 連接埠OpenSSH
ssh -p 2222 [email protected]ssh 使用小寫 -p;scp 的 port 參數是大寫 -P。
指定私鑰OpenSSH
ssh -i ~/.ssh/id_ed25519 [email protected]私鑰權限通常應限制為只有本人可讀。
只執行遠端命令OpenSSH
ssh [email protected] 'uname -a'引號決定由本機還是遠端 shell 展開。
詳細除錯OpenSSH
ssh -vvv [email protected]可能顯示內網名稱與認證流程,分享前遮蔽。
測試認證但不開 shellOpenSSH
ssh -T [email protected]遠端服務需支援此用法;不代表所有 SSH server 都一樣。
指定連線逾時OpenSSH
ssh -o ConnectTimeout=8 [email protected]只限制建立連線的等待。
避免閒置連線被中間設備切掉OpenSSH
ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 [email protected]這是 client 端 keepalive,不是 server TCP keepalive。
SSH config 與跳板
查看套用後的 SSH 設定OpenSSH
ssh -G production | less可確認 Host、User、IdentityFile 與 ProxyJump 最終值。
使用主機別名~/.ssh/config
Host production
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/id_ed25519把內容放進 ~/.ssh/config,之後可用 ssh production。
經跳板機登入OpenSSH
跳板與目標都會各自做 host key 驗證。
在 config 設 ProxyJump~/.ssh/config
Host internal-app
HostName 10.20.0.15
User appuser
ProxyJump [email protected]集中管理可避免操作時漏參數。
只允許指定 IdentityOpenSSH
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 [email protected]避免 agent 提供太多金鑰導致認證失敗。
列出 agent 已載入金鑰OpenSSH agent
ssh-add -l只顯示 fingerprint,不應顯示私鑰內容。
載入金鑰到 agentOpenSSH agent
ssh-add ~/.ssh/id_ed25519共享電腦與長期 agent 要留意金鑰可用時間。
Port Forward/Tunnel
本機轉送到遠端資料庫OpenSSH
ssh -N -L 127.0.0.1:15432:db.internal:5432 [email protected]本機只綁 loopback;連線 localhost:15432 即轉到遠端 DB。
本機轉送遠端 WebOpenSSH
ssh -N -L 127.0.0.1:18080:127.0.0.1:8080 [email protected]讓遠端 localhost 服務只暫時從本機存取。
背景建立轉送OpenSSH
ssh -fN -o ExitOnForwardFailure=yes -L 127.0.0.1:15432:db.internal:5432 [email protected]-f 進背景前先確認 forward 成功;要記錄如何停止。
建立 SOCKS5 proxyOpenSSH
ssh -N -D 127.0.0.1:1080 [email protected]應只綁 loopback,並在應用程式設定 SOCKS5。
遠端轉送到本機服務OpenSSH
ssh -N -R 127.0.0.1:18080:127.0.0.1:8080 [email protected]是否允許與 bind 範圍受 server GatewayPorts 等設定影響。
檢查遠端 host keyOpenSSH
ssh-keyscan -t ed25519 server.example.comkeyscan 不會證明真實身分,輸出 fingerprint 後仍需用可信管道核對。
看本機 known_hosts 對應項目OpenSSH
ssh-keygen -F server.example.com只查詢,不刪除。
怎麼確認有做對
- ssh -G 檢查最終 client 設定。
- 第一次連線用另一管道核對 fingerprint。
- 轉送建立後用 ss、lsof 或 Test-NetConnection 確認只綁預期介面。
常見錯誤
- 看到 host key changed 就直接刪 known_hosts。
- 私鑰權限過寬或被放進版本庫。
- Port Forward 綁 0.0.0.0,意外對整個網段開放。
- 把 ProxyJump、ProxyCommand 與 shell 引號混寫。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。