ssh `ClearAllForwardings = yes`はコマンドラインの-Lを無視します。

ssh `ClearAllForwardings = yes`はコマンドラインの-Lを無視します。

次のコマンドを検討してください(私が作成しているスクリプトの一部です)。

ssh -oClearAllForwardings=yes -NL 5555:localhost:5555 foo

ClearAllForwardings=yes私のSSH設定にオプションがある可能性があり、このコマンドでこれらのオプションが発生することを望まないので、私は望んでいますLocalForward(他の場所に渡され、このスクリプトを実行するときに使用されるポートについて警告すると混乱する可能性があります)。

しかし、ClearAllForwardings=yessshが完全に無視するようですみんな後でコマンドラインに提供されても渡されます。

~/.ssh/configそこに到達する方法に関する情報が含まれているので、sshにそれを完全に無視するように言うことはできませんfoo

それでは、sshがコマンドラインで特定のポート転送を無視しLocalForwardながら、まだ許可するようにするにはどうすればよいですか?~/.ssh/config

答え1

~/.ssh/configあなたの個人的なファイルであり、あなたが管理します。この事実を利用して、次のようにファイルをクリーンアップします。

Host foo bar
   Hostname …
   # common options here

Host foo
   # forwardings here

ssh fooどちらの部分も一致します。スクリプトssh -L … barは、コマンドが共通オプションと一致する必要があります。〜しないだろうセクションを前方に合わせます。

あなたが必要とするものに注意を払ってくださいHostname。以前の設定でホスト名を指定しなかった場合、今必要なのはfoo暗黙のホスト名でしたssh foo(したがって接続ではなく接続に接続)。fooHostname foossh barfoobar


何らかの理由で編集したくない場合~/.ssh/config(たとえば、スクリプト全体の「内部」にあるソリューションが必要な場合)、次の点を考慮してください。

スクリプトを実行ssh -oClearAllForwardings=yes -fNMS … fooしてからsshポート転送の追加と削除を呼び出して、基本プロセスと通信できますssh -S … -O …。バラより私の他の答えたとえば、リモート転送を追加する場合(-R)、ローカル転送を追加することも同様です。次のものが必要ですssh -S … -O forward -L 5555:localhost:5555 placeholder

関連情報