次のコマンドを検討してください(私が作成しているスクリプトの一部です)。
ssh -oClearAllForwardings=yes -NL 5555:localhost:5555 foo
ClearAllForwardings=yes
私のSSH設定にオプションがある可能性があり、このコマンドでこれらのオプションが発生することを望まないので、私は望んでいますLocalForward
(他の場所に渡され、このスクリプトを実行するときに使用されるポートについて警告すると混乱する可能性があります)。
しかし、ClearAllForwardings=yes
sshが完全に無視するようですみんな後でコマンドラインに提供されても渡されます。
~/.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
(したがって接続ではなく接続に接続)。foo
Hostname foo
ssh bar
foo
bar
何らかの理由で編集したくない場合~/.ssh/config
(たとえば、スクリプト全体の「内部」にあるソリューションが必要な場合)、次の点を考慮してください。
スクリプトを実行ssh -oClearAllForwardings=yes -fNMS … foo
してからssh
ポート転送の追加と削除を呼び出して、基本プロセスと通信できますssh -S … -O …
。バラより私の他の答えたとえば、リモート転送を追加する場合(-R
)、ローカル転送を追加することも同様です。次のものが必要ですssh -S … -O forward -L 5555:localhost:5555 placeholder
。