最初の一致でSSH構成を停止する

最初の一致でSSH構成を停止する

すべてのホストに対して.ssh設定にローカルプロキシを追加しましたが、プロキシコマンドなしでローカルVMに入りたいと思います。私のSSH試みの出力:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

次のSSH設定でProxyCommandがlocal.devエントリに適用されないようにするにはどうすればよいですか?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

答え1

!以下を使用する前に、ProxyCommandからlocal.devを除外できます。

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

~からssh_config文書:

複数のパターンがある場合は、スペースで区切る必要があります。

パターン項目の前に感嘆符(「!」)を付けてパターン項目を無効にすることができます。。負の項目が一致すると、行の他のパタ​​ーンが一致するかどうかに関係なく、ホスト項目は無視されます。したがって、否定一致は、ワイルドカード一致の例外を提供するのに役立ちます。

文書には次のように記載されています。

各パラメータについて、得られた最初の値が使用されます。。構成ファイルには、「ホスト」仕様で区切られたセクションが含まれています。このセクションは、仕様で提供されているパターンの1つと一致するホストにのみ適用されます。一致するホスト名は、コマンドラインで指定されたホスト名です。

したがって、次に定義された値をオーバーライドしてlocal.devのProxyCommandを無効にすることもできますHost *

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none

答え2

構成ファイルのオプションは、最初の一致時に適用されます。ホストエントリにProxyCommandがないため、*エントリのプロキシコマンドが使用されます。

この問題を解決する方法は2つあります。

  • プロキシコマンドを使用したくないホストの場合は、次の行を追加します。
    エージェントコマンドなし
  • この項目の場合、否定を使用して*ホストにこの項目を適用しないことに特に注意してください。local.dev!
    ホスト!local.dev *

関連情報