
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
このサーバーにのみ適用できますか?
答え1
Match
と比較できますHost
。他のオプションと同様に、ホストのサブセットとして存在しません。
ただし、一致に対して複数の条件を指定できます。これは、短絡されたANDのように動作するようです。したがって、これが可能で効果があるはずです。
Match host target_host exec not_inside_network
ProxyCommand ssh -W %h:%p proxy_server
このルールは SSH を使用するたびに確認されます。ただし、「target_host」と一致しないホストの場合、一致はすぐに失敗し、次Match
またはHost
キーワード(存在する場合)に移動します。ホストが「target_host」の場合にのみ実行が行われます。これにより、ステートメントの真実性によってProxyCommandが呼び出されるかどうかが決まります。
発生するロジックを表示するには、-vvvを使用して実行してください。 debug3でいくつかの一致チェックを確認する必要があります。