接続するアドレスを生成する関数呼び出しを実行して、SSH接続の宛先アドレスを確認したいと思います。ProxyCommand
オンラインで見つけることができるすべての例は、この-W
フラグを使用して2番目のシステムに移動します。 2台目のコンピュータで試してみましたが、うまくいきlocalhost
ましたが、SSH認証が2回必要でしたが、気に入りませんでした。
2番目のホップに転送せずに内部通話を試みていますssh
。ProxyCommand
今私の.ssh/config
ファイルには次のものがあります。
Host test
ProxyCommand ssh user@address
これはssh test
接続がうまくいくようですが、接続後に入力に応答しない空のプロンプトが表示され、stdin / stdoutが正しく接続されていないようです。
関連質問:
ベストアンサー1
コマンドを渡さないため、ssh
標準入力でコマンドを期待するシェルを実行します。ただし、シェルコマンドを転送するのではなく、SSHトラフィックを転送することです。笑いが続きます。
トンネルはですProxyCommand
。この例では、SSH 接続内で SSH 接続をトンネリングします。トンネルを望まない場合、ProxyCommand
これはあなたが探しているものではありません。
OpenSSH 6.4以降、キーワードをMatch
含むディレクティブを使用して、実行時exec
の指示に従ってブロックを条件付きで含めることができます。一般的なユースケースは、ノートブックの場所によって実際のホスト名またはプロキシコマンドが異なる場合です。各Match
ブロックはHost
ブロックを置き換えるため、コマンドの出力を使用してホスト名を解決することはできず、状態0で終了したという事実のみが使用できます。
# Connection inside ACME network
Match host foo exec on-acme-network
HostName foo.acme.local
# Connection from outside ACME
Host foo
HostName foo.example.com
代理人は別のオプションです。接続時に決定されたホスト名とポートへの接続を確立するには、次を使用できます。インターネット猫TCP接続を確立します。
Host foo
ProxyCommand nc $(determine-target-host-name) 22
完全に動的なパイプが必要な場合は、.ssh/config
名前付きパイプにしてプロセスを常にパイプに書き込むことができます。それとも、スクリプトファイルシステム。