前言
一般公司的服務器放在外網時,都會設置一個跳板機,訪問公司其他服務器都需要從跳板機做一個ssh跳轉(防火牆規則會做相應配置),而前文講過,外網的服務器基本都要通過證書登錄的。於是我們面臨一個情況,本機ssh->跳板機->目標機器。如果是密碼驗證,這個問題都不到,但是對於證書登錄,就帶來一個ssh密鑰轉發的問題。
linux ssh客戶端密鑰轉發
如果是linux客戶端,從linux客戶端的ssh跳轉過去時,一般我們會執行命令
ssh blue@跳板機ip
然后我們在跳本機上跳轉到目標機器
ssh blue@目標機器ip
跳板機ip和目標機器ip,blue賬戶下已經在相應的.ssh/authorized_keys加入了公鑰,配置是沒有問題了,但是我們會遇到一個錯誤,叫Pubkey Unauthorization,因為跳板機沒有blue的私鑰。問題總是會有,解決方法也總是有,ssh是有轉發密鑰的功能,所以我們從本機跳轉到跳板機是,可以把私鑰轉發過去。
所以正確做法是,在本機linux客戶端執行命令
ssh -A blue@跳板機ip
-A表示轉發密鑰,所以跳轉到跳板機,密鑰也轉發了過來。
接下來我們再在跳板機執行命令
ssh -A blue@目標機器ip
這里的-A參數非必要,如果你不需要從目標機器跳轉到其他目標機器,也不需要繼續轉發密鑰了。
另外可以配置本機客戶端的默認配置文件,修改為默認轉發密鑰:
修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):把#ForwardAgent no改為ForwardAgent Yes
跳板機是否需要配置,同理參考你的需要。
windows SecureCRT密鑰轉發
windows下SecureCRT配置代理轉發,需要做以下設置
這里也只是配置客戶端跳轉到跳板機轉發密鑰,至於跳板機是否可以轉發密鑰,還是要參考上文的。