すべてのホストに対して.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 *