SSHクライアントを2つの異なるホストアドレスにバインドする

SSHクライアントを2つの異なるホストアドレスにバインドする

テスト目的のために、このポート転送ソリューションがあります。という名前のリモートサーバーがあります。そして名前の付いた機械トップ、2つの別々のネットワークにあります。インターネット経由でアクセスできます。

存在するトップ、次のコマンドを実行します。

ssh -R 80:localhost:80 box.sleblanc

これは以下に関連しています。Webサービスにアクセスするポート80にソケットを設定します。トップ、ポート80。いつボックス数:80、ログにあるWebサービスが次のようになります。127.0.0.1。私はこれが合法的にlocalhostから来る接続とプロキシから来る接続を間違いなく区別することができないので、これは迷惑だと思います。

BindAddressオプションを別のものに設定する(例:192.168.0.100) プロキシへの接続は実際にそのアドレスに表示され、問題は解決されますが、サービスがlocalhost以外のネットワークアドレスで実行されるように強制します。

curl --interface 127.0.0.2 localhost:80IPアドレスから生成された要求を実行すると、127.0.0.2正当なローカル要求とプロキシ要求を区別できるという要件を満たすことがわかりましたBindAddress127.0.0.2、SSHに接続できなくなりました。、ように127.0.0.0/8ネットワークをルーティングできません。

最終的に私の質問は次のとおりです。クライアントがインターネットホストに接続し、リモートポートリダイレクトを削除できるように、SSHクライアントを複数の異なるアドレスにバインドするにはどうすればよいですか?127.0.0.1?つまり、リモート転送ポートの接続をローカルアドレスに厳密にバインドします。127.0.0.2


遊ぶソカット、私はこの解決を見つけました:

% socat TCP4-Listen:1234,fork TCP:127.0.0.1:80,bind=127.0.0.2 &
% ssh -R 80:127.0.0.1:1234 box.sleblanc

これは、着信接続をポート1234でリッスンするソケットを確立し、ローカルアドレスにバインドし、それを127.0.0.1:80に転送します。127.0.0.2。期待どおりに正しく動作しますが、これをSSHコマンドで単純化する方法があるかどうか疑問に思います。

ベストアンサー1

おすすめ記事