SSH 速查表
一份可搜尋、可列印的 SSH 參考——連線、金鑰、設定、隧道、SCP/SFTP 和 agent 轉發。免費。
連線
10ssh user@host
以使用者身分連線至主機
ssh -p 2222 user@host
以非預設連接埠連線
ssh -i ~/.ssh/id_ed25519 user@host
使用特定的身分金鑰
ssh user@host 'uptime'
執行單一遠端命令後結束
ssh -v user@host
除錯用的詳細輸出(-vvv 更詳細)
ssh -t user@host 'sudo -i'
強制使用偽終端機(用於互動命令)
ssh -X user@host
啟用 X11 轉送
ssh -o ServerAliveInterval=60 user@host
傳送保活封包以避免逾時
exit / Ctrl-D
關閉遠端工作階段
~.
強制中斷凍結的工作階段
金鑰產生
8ssh-keygen -t ed25519 -C 'you@example.com'
產生現代的 Ed25519 金鑰對
ssh-keygen -t rsa -b 4096
產生 4096 位元的 RSA 金鑰對
ssh-keygen -t ed25519 -f ~/.ssh/work
將金鑰寫入特定檔案
ssh-keygen -p -f ~/.ssh/id_ed25519
變更現有金鑰的密碼短語
ssh-keygen -y -f ~/.ssh/id_ed25519
從私鑰印出公鑰
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
顯示金鑰指紋
ssh-keygen -lv -f ~/.ssh/id_ed25519.pub
顯示指紋 randomart 圖像
ssh-keygen -R host
從 known_hosts 移除主機金鑰
安裝公鑰
7ssh-copy-id user@host
將你的預設公鑰複製到伺服器
ssh-copy-id -i ~/.ssh/work.pub user@host
複製特定的公鑰
ssh-copy-id -p 2222 user@host
透過自訂連接埠複製金鑰
cat ~/.ssh/id_ed25519.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'
缺少 ssh-copy-id 時手動複製
chmod 700 ~/.ssh
修正 .ssh 目錄的權限
chmod 600 ~/.ssh/authorized_keys
修正 authorized_keys 的權限
pbcopy < ~/.ssh/id_ed25519.pub
將公鑰複製到剪貼簿(macOS)
SSH 設定(~/.ssh/config)
10Host myserver
別名:以 `ssh myserver` 連線
HostName 203.0.113.10
別名對應的真實主機名稱或 IP
User deploy
此主機的預設使用者名稱
Port 2222
此主機的預設連接埠
IdentityFile ~/.ssh/work
此主機要使用的金鑰
IdentitiesOnly yes
僅提供所列的金鑰
ForwardAgent yes
將 SSH agent 轉送至此主機
Host *.example.com
網域的萬用字元比對
Host *
所有主機的全域預設值
ServerAliveInterval 60
所有主機的保活間隔
連接埠轉送/通道
7ssh -L 8080:localhost:80 user@host
本地:透過本地 8080 連到 host:80
ssh -L 5432:db.internal:5432 user@host
經由伺服器本地轉送至第三台主機
ssh -R 9000:localhost:3000 user@host
遠端:將你的本地 3000 公開為 host:9000
ssh -D 1080 user@host
動態:在本地連接埠 1080 的 SOCKS 代理
ssh -N -L 8080:localhost:80 user@host
僅建立通道,不執行遠端 shell
ssh -f -N -L 8080:localhost:80 user@host
於背景開啟通道
ssh -g -L 8080:localhost:80 user@host
允許其他主機使用本地轉送
跳板主機/堡壘機
5ssh -J jump@bastion user@target
經由堡壘機抵達目標
ssh -J h1,h2 user@target
串接多個跳板主機
ProxyJump bastion
-J 的設定等效寫法
ProxyCommand ssh -W %h:%p bastion
舊式以 ProxyCommand 為基礎的跳板
ssh -o ProxyJump=bastion user@target
內嵌 ProxyJump 選項
檔案傳輸(scp 與 sftp)
7scp file user@host:/path/
將本地檔案複製到伺服器
scp user@host:/path/file .
將遠端檔案複製到目前目錄
scp -r dir/ user@host:/path/
遞迴複製目錄
scp -P 2222 file user@host:/path/
透過自訂連接埠複製(注意大寫 -P)
sftp user@host
開始互動式 SFTP 工作階段
put localfile / get remotefile
在 SFTP 內上傳/下載
rsync -avz -e ssh dir/ user@host:/path/
透過 SSH 的高效同步(可續傳)
ssh-agent 與轉送
7eval "$(ssh-agent -s)"
在目前 shell 啟動 agent
ssh-add ~/.ssh/id_ed25519
將金鑰加入 agent
ssh-add -l
列出 agent 中載入的金鑰
ssh-add -D
從 agent 移除所有金鑰
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
將密碼短語存入 macOS 鑰匙圈
ssh -A user@host
為此連線轉送 agent
ForwardAgent yes
agent 轉送的設定等效寫法
沒有條目符合「:q」。
需要協助?
使用此工具時遇到問題?請告訴我們的團隊。