先登入堡壘機,再由它把你送到目標機器。驗證碼、選單,以及連過去之後的工作階段,Term 都能處理。
需要 Term v26.1.6 或更新版本。
透過網關連線從 v26.1.5 起就能用了。v26.1.6 改的是登入本身:進去要花的嘗試次數更少,失敗時也會說清楚到底是哪裡出了問題。
撰寫於
連普通伺服器時,你直接連到那台機器。連 JumpServer 時,你連的是閘道:它核對你的身分,列出你有權限存取的機器,然後代替你去連接目標機器。目標機器的密碼你從來不需要持有 —— 那在閘道手上。
所以它和 Term 的跳板機設定不是同一回事。跳板機是把你穿透過去,由你自己在目標機器上登入;堡壘機則是在閘道處終結連線,再另起一條連過去。因此請把 JumpServer 的位址填在普通的主機欄,跳板機留空。
你真正連上的那一層叫 koko —— JumpServer 負責字元協定(SSH、Telnet、SFTP、Kubernetes、資料庫)的元件。核對登入、畫出選單、再向目標機器發起連線的都是它,所以下文關於選單和驗證碼的說明,講的是 koko 的行為,而不是網頁主控台的。
2222 而不是 22,實際情況問管理員。堡壘機把你放在一個選單裡,而不是 shell。提示符長這樣:Opt>。輸入機器的編號,或者名稱、位址的一部分,然後按 Enter:
p —— 列出你能存取的機器g —— 按節點分組列出/名稱 —— 搜尋,例如 /192.168? —— 說明 · q —— 登出選好之後你就在那台機器的 shell 上了,一切照常 —— 按鍵列、方向鍵、Ctrl-C、改變視窗大小都正常。用 exit 離開這個 shell,就回到選單,可以直接挑下一台,不必重新登入。
JumpServer 也支援直接連到某一台機器:把完整目標寫進使用者名稱欄 —— 你@帳號@機器,其中 你 是 JumpServer 使用者,帳號 是目標機器上的登入名,機器 是它在 JumpServer 裡的名稱。
兩種分隔符都可以。最省事的填法是:把完整目標填進使用者名稱欄,主機欄只填 JumpServer 的位址 —— 這樣不需要任何推斷。如果你更習慣把整串 你@帳號@機器@JumpServer位址 貼到主機欄,Term 會按最後一個 @ 拆分,正好把目標留在使用者名稱裡。至於是否開放直連,取決於 JumpServer 那邊的設定。
在 JumpServer 主機上,指令建議和工作完成提示是關閉的。這兩項功能靠 Term 在連線瞬間往你的 shell 裡裝一小段輔助腳本,而堡壘機的選單並不是 shell —— 送過去只會被原樣打進選單裡,而且很可能被記錄下來。所以 Term 會辨識出 JumpServer 並略過這一步。
SFTP 分頁暫不支援經由堡壘機使用,請在普通主機上使用它。
另外值得記住:堡壘機通常會錄製工作階段 —— 這正是它存在的意義。經由它輸入的內容都可能被保留並複查。
Term 會先問網關接受哪些登入方式,再決定先用哪一種。這一點在堡壘機上比在別處都要緊:koko 在密碼通過之前根本不提供驗證碼那一步,所以一上來就走驗證碼的客戶端,會在還沒遞出任何憑據之前,就白白用掉網關允許的一次嘗試。只允許一兩次的網關,會在登入進行到一半時直接掛斷——而密碼其實一直是對的。
真的掛斷時,Term 現在會直說:伺服器在給出結果之前就中斷了登入。在 v26.1.6 之前,這裡給出的是一條在原始碼之外毫無意義的內部錯誤。請稍等一會兒再試,不要立刻重來——這類限制是按時間計的,連著重試只會讓它一直處在觸發狀態。
如果網關要的是驗證碼,現在的失敗訊息會指出是哪一環:這台主機沒填密鑰、密鑰讀不出來,或者網關拒絕了這個驗證碼。每種情況的含義見兩步驗證指南。