Ssh

不必要時使用 ProxyJump 的缺點

  • June 4, 2021

ProxyJump不需要時使用有什麼缺點嗎?

我們在許多機器之間使用共享的 .ssh/config 文件,其中一些在 jumpbox 後面,而另一些則不在。對於位於特定 jumpbox 後面的兩台機器,仍然使用該ProxyJump選項是否有缺點?(我想會有難以察覺的額外延遲,但就是這樣)。

現在我們的共享配置使用此設置僅ProxyJump在需要時使用:

Match Host example Exec "! nslookup $(nslookup internal.site.com | head -1 | grep -o '[0-9]\+\([.][0-9]\+\)\{3\}') | grep -o 'name = .\+site.com\.$'"
   ProxyJump jumpbox
Host example
   HostName example.internal.site.com

但是,Match Exec檢查有點脆弱,不一定能在所有系統上正常工作。

ProxyJump 本質上做了以下事情:

  1. 它連接到代理,創建一個 TCP 埠,將隨機本地埠轉發到目標埠(22 或為目標主機配置的任何一個)。這種聯繫存在於後台。
  2. 然後它連接到這個轉發埠,從而使用剛剛創建的 SSH TCP 隧道。隧道設置為連接到目標主機 SSH 埠,因此連接繼續到該目標埠。

因此 SSH 連接是直接的。您可以通過它傳遞 TCP 隧道,正向或反向,或使用任何其他 SSH 功能。你甚至可以使用代理伺服器作為第三個系統的代理,然後會有兩個後台連接轉發隨機埠。

我認為它們的缺點是:

  • 對代理的依賴。如果您需要對代理本身做一些工作,重新啟動它,或者類似的事情,所有正在執行的連接都將被終止。
  • 目標主機看到連接就好像它是從代理完成的一樣。連接系統的真實地址是完全隱藏的。支持這種安全性的負擔在於代理。此外,如果目標主機執行了一些自動禁止服務,如 fail2ban,並且代理連接成功,但目標不成功,則該服務最終可能會阻止來自代理的任何連接。不是很方便!

這兩個缺點都是使用代理的必要權衡,但有時,當主機可直接訪問時,可能會出乎意料(即當您認為您正在直接連接時)。

引用自:https://serverfault.com/questions/1065659