ssh proxyjump 指令到設定文件

ssh proxyjump 指令到設定文件

我使用 ssh 命令透過 proxyjump 使用中間節點登入遠端節點。遠端和中間節點是Linux伺服器,我的客戶端是Macbook。該命令有效,看起來像:

ssh -i .ssh/id_file -J user1@jump_node -A -D remote_port user2@remote_node

我將jump_node 和remote_node 替換為中間節點和遠端節點的主機名,並將remote_port 替換為remote_node 上的sshd 連接埠。

我的第一個也是主要問題是:如何將此命令放入配置部分我可以將其放入我的 .ssh/config 檔案中嗎?我查看了 ssh 手冊頁,無法獲得-D-A標誌的相應配置選項(我猜ForwardAgent yes-A?)。有人可以解釋一下這些標誌以及如何從此命令中建立正確的配置部分嗎?


我的另一個問題不太重要,但會幫助我理解這裡發生的事情。第二個問題是關於當我發出稍微不同的命令時出現的錯誤。

我在線上閱讀的大多數文件都建議使用以下命令:

ssh -i .ssh/id_file -J user1@jump_node user2@remote_node:remote_port

但是當我嘗試此命令(帶標誌和不帶-A標誌)時,出現以下錯誤:

channel 0: open failed: connect failed: Name or service not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

我無法弄清楚這個錯誤意味著什麼以及它是否有一些我可以使用的提示?

答案1

man 5 ssh_config

ForwardAgent yes
IdentityFile .ssh/id_file

Host jump_node
    User user1

Host remote_node
   ProxyJump jump_node
   User user2

就跑吧ssh remote_node

ProxyJump如果您還指定了(另一個),您甚至可以透過這種方式建立鏈jump_node


第二個問題是ssh user2@remote_node:remote_port文法不正確。錯誤訊息指出Name or service not known,因為它嘗試(但失敗)解析remote_node:remote_port為主機名稱(是的,帶有嵌入的冒號),而不是remote_node您所期望的那樣。嘗試在沒有 的情況下執行相同的操作-J,錯誤訊息會稍微更清晰。

我將此解釋為嘗試指定 SSH 伺服器在遠端節點上偵聽的連接埠;為此,請在設定檔中使用-p命令列參數或主機條目選項。Port

-D此外,這與命令列開關沒有任何共同之處。而且它的論點不是「遠端端口」。相反,該交換器做了完全不同的事情,即它使 SSH 客戶端在指定連接埠上在本機上並接受 SOCKS 連接,遠端將用作退出節點。例如,您可以在本機瀏覽器中進行配置,以便它將透過 SSH 隧道存取互聯網,而第三方(Web 伺服器)會將您的連接視為來自遠端主機的 IP;除了 SSH 伺服器(不過在這種情況下它將看到跳轉伺服器的位址)之外,沒有人會看到您的「真實」IP。設定在配置中,您可以使用DynamicForward設定檔中的選項。

相關內容