SSHトンネリング用の共有ポートを持ち、クライアントに基づいてセッションを分離することは可能ですか?

SSHトンネリング用の共有ポートを持ち、クライアントに基づいてセッションを分離することは可能ですか?

SSHトンネリング用の共有ポートを持ち、クライアントに基づいてセッションを分離することは可能ですか?たとえば、次のように、共有サーバーのポート9999のトンネルを他のサーバーのSSHトンネルとして使用するclient1があるとします。

クライアント1ポート8888 - >共有ホストポート9999 - >サーバー1ポート4477

共有サーバーのポート9999を他のクライアントに次のように他のエンドホストにトンネリングするために使用する方法はありますか?

クライアント2ポート8888 - >共有ホストポート9999 - >サーバー2ポート5568

重要なのは、共有ホストポートに転送されるクライアントのローカルポートが常に同じポートであることです。トンネルは共有ホストから目的のエンドポイントまで拡張できますが、トンネルはまだ共有ホストの同じポートを通過します。

私は多くのことを試しましたが、最終的にそのポートでclient2セッションが拒否されるか、client1からのトラフィックがclient2にルーティングされます。

私はこれが理想的な設定ではないことを知っていますが、残念ながらこれが私が処理する必要があります。

--edit-- 追加された例:

共有ホスティングを介してのみアクセスできる2つのWebサーバーがあります。この例では、単に「Server 1 Response」または「Server 2 Response」で応答します。認証はrsaキーで処理され、user1とuser2は完全に別々のハードウェアを使用します。

user1が最初に接続します。

user1@localbox1$ ssh -t -L 8888:localhost:9999 [email protected] "ssh -L 9999:localhost:80 [email protected]"
[email protected] $ 

トンネルは期待どおりに機能します。

user1@localbox1$ curl "http://localhost:8888"
server1 repsonse
user1@localbox1$

ユーザー 2 が接続しようとするとエラー メッセージが表示され、ユーザー 1 のトンネルが使用されます。

user2@localbox2$ ssh -t -L 8888:localhost:9999 [email protected] "ssh -L 9999:localhost:80 [email protected]"
bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 9999
Could not request local forwarding.
[email protected] $ 

これにより、User1のセッションがUser2のトンネルに転送されます。

user2@localbox2$ curl "http://localhost:8888"
server1 response
user2@localbox2$

トンネルがすでに作成されている場合、応答はserver2 responseありませんserver1 response

残念ながら、最後のホストアドレスが変更される可能性があり、これらの値をユーザー側で確認できないため、2番目のトンネルへのリモートコマンドが必要であることに注意する価値があります。簡単にするために、この例では実際の最終ホストアドレスを使用しました。

ベストアンサー1

はい、client1とclient2が異なるコンピュータであり、同じコンピュータ上の他のユーザーではないと仮定すると可能です。

うまくいかないと思う理由はありますか?何かを試してみましたが、何かがうまくいきませんでしたか?

編集する

あなたの例では、client1とclient2は同じシステムにあるので、localboxもちろん動作しません。

最も簡単な解決策は、2つの異なるポートを使用することです。他のポートを使用しない特別な理由はありますか?

別の解決策は、異なるソースアドレスを使用することです。

ssh -t -L 127.0.0.2:8888:localhost:9999 [email protected]

ssh -t -L 127.0.0.3:8888:localhost:9999 [email protected]

これでターゲットに接続でき127.0.0.2:8888ます127.0.0.3:8888

名前空間、コンテナ、仮想マシンを使用できますが、これはより複雑で必要に応じて異なります。

おすすめ記事