Ssh
僅將匹配關鍵字應用於 ssh 配置中的單個主機
我有一個我 ssh 進入的主機。有時我在同一個網路中,可以直接通過 ssh 進入,有時我在它之外,我需要使用代理。
因為通過代理伺服器的 ssh 比直接連接慢得多,所以我想設置我的 ssh 配置,以便我嘗試直接連接,如果失敗則回退到代理。
目前配置如下:
Host proxy_server User user Port port Hostname some_domain Host target_host User user Port port Hostname ip_addr_of_host Match exec not_inside_network ProxyCommand ssh -W %h:%p proxy_server
該
target_host
條目是我的配置文件中的最後一個條目,但not_inside_network
會被任何 ssh 連接呼叫到配置文件中不相關的伺服器。我怎樣才能使Match
只適用於這台伺服器?
Match
與 相當Host
。它不像其他選項那樣作為 Host 的子集存在。但是您可以在匹配項上指定多個條件,並且它們似乎作為短路 AND 操作。所以這對你來說應該是可能的和有用的:
Match host target_host exec not_inside_network ProxyCommand ssh -W %h:%p proxy_server
將在每個 ssh 上檢查此規則。但是對於不匹配“target_host”的主機,匹配立即失敗並移動到下一個
Match
或Host
關鍵字(如果有)。僅當主機是“target_host”時才會發生 exec。然後該語句的真實性將確定是否呼叫了 ProxyCommand。要查看發生的邏輯,請使用 -vvv 執行。您應該在 debug3 中看到一些匹配檢查。