跳板主機的用途
跳板主機也稱為堡壘主機,是一台你可以直接連線、且能存取內部伺服器的伺服器。對外僅開放堡壘主機的 SSH 連接埠;內部伺服器只接受來自內部網路的 SSH 連線。使用 ProxyJump 時,用戶端會建立一條到堡壘主機的 SSH 連線,再透過它建立第二條到目標伺服器的端對端加密連線。堡壘主機會轉送流量,但無法看到工作階段的內容,而私密金鑰會留在你的電腦上。
從命令列連線
-J 選項用來指定跳板主機。若有多個跳點,請以逗號分隔,連線會依照指定順序通過各跳點。如果經常使用相同路徑,請將設定加入 ~/.ssh/config,之後只需使用簡短的別名。
ssh -J admin@bastion.example admin@app.internal
ssh -J admin@bastion.example,ops@hop2.example admin@app.internal
# ~/.ssh/config
Host app-internal
HostName app.internal
User admin
ProxyJump admin@bastion.example驗證每台主機的金鑰
每個跳點都是獨立的 SSH 伺服器,各自擁有主機金鑰,因此請透過另一個可信管道確認堡壘主機與目標伺服器的金鑰指紋。任何跳點的金鑰變更,都應像直接連線時一樣謹慎處理。首次連線時,請將顯示的指紋與管理員在伺服器上讀取的值比較。
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256優先使用 ProxyJump,避免代理程式轉送
代理程式轉送(ssh -A)會讓堡壘主機上任何具備足夠權限的人,在你保持連線期間使用你已載入的金鑰。ProxyJump 不需要這項功能,因為對目標伺服器的驗證是從你自己的電腦進行。也請避免在堡壘主機上儲存私密金鑰,並限制可登入的人員。
常見連線問題
先找出哪個跳點失敗:單獨連線到堡壘主機,再執行搭配 -J 的 ssh -vvv,查看連線在哪裡停止。如果堡壘主機正常,但目標無法連線,原因通常是兩者之間的防火牆、錯誤的內部主機名稱,或目標伺服器不接受你的金鑰。設定為 AllowTcpForwarding no 的伺服器會拒絕擔任跳板主機。
CH-J Server Manager 中的跳板主機
Alpha 0.1.1 可透過已儲存或手動輸入的跳板主機連線,已儲存的主機也能組成最多三台跳板主機的鏈結。每個跳點都會檢查主機金鑰。可用性監視器只有在通往跳板主機的工作階段已開啟時,才會透過該工作階段檢查跳板主機後方的伺服器;否則會將伺服器顯示為未驗證,絕不會顯示為上線。Beta 0.1.0 沒有此功能。