ダイナミックSSHポート転送を作成する方法

ダイナミックSSHポート転送を作成する方法

次のSSHトンネルレイアウトを設定しようとしています。

  1. クライアントA(Sshサーバーがアクティブではない)は、サーバーSとのSSH接続を開始します。
  2. ocksサーバーはS:yyyyサーバーで開き、すべてのデータはクライアントAを介して送信されます。
  3. クライアントBはサーバSのソックスサーバに接続し、tcpデータはクライアントAを介してインターネットにルーティングされる。

考えられる解決策の1つは、クライアントAにプロキシサーバーを追加し(localhost:xxxxにバインド)、クライアントssh -R yyyy:localhost:xxxx ServerAで実行することです。これは目標を達成します。しかし、SSHを使用するのと同じくらいきれいではありません。

AのSSHクライアントとSのSSHサーバーを使用してこれを達成できますか?これは、SSHを介したダイナミックポート転送と同じです。 AからSに生成し、何らかの方法でこのトンネルの上にSからAに2番目のトンネルをssh -D設定します。ssh -D少し混乱し、可能であるかどうかはわかりません。

答え1

オープンSSH 7.6ダイナミックプロキシをデフォルトオプションとして導入します。完全にクライアント側で実装されるため、サーバー側での更新は不要です。

ssh -R 1080 server

答え2

私はこれを探していて、同じ(または同様の)問題に直面しました。スタックオーバーフロー

クライアントAでssh -R \*:24680:localhost:12345 serverS(まだクライアントAで)ssh -D 12345 localhost[1]

あなた必要localhostだけで\*なく、サーバーSのパブリックIPアドレスにバインドされます。

次に、クライアントBからソックスサーバーに接続します。serverS:24680


[1]編集:クライアントAにSSHサーバーがないと、それ自体がSSHを実行できないため、これが機能しないことに気づきました。クライアントAにはSSHサーバーがありますが、サーバーSには設定にアクセスできない設定を検討しています。ただし、同様の設定をインストールできる場合は引き続き機能します。ソックスサーバークライアントAでポート12345で開きます。

答え3

これが誰かに役立つかどうかはわかりません。ここに私が構築した設定図があります...

SOCKSプロキシを使用したSSHリバーストンネル

MACHINE_B には 2 つのプロセスが表示されます。

MACHINE_A(オリーブ)へのSSHクライアント接続:

ssh -R 127.0.0.1:22344:127.0.0.1:4444 -i privkey.sshkey -N user_a@machine_a

ポート4444(ダークグリーン)でSOCKSサーバーとして機能するSSHクライアント:

ssh -D localhost:4444 -N user_c@localhost

ポート22344(オリーブ)でリッスンする再生サーバーMACHINE_Aにプロセスがあります。

MACHINE_Aの薄緑色のプロセスが接続を要求した場合は、MACHINE_Bの薄緑色のプロセスが表示されます。

答え4

とても簡単です。

ローカル側(サーバーS)でopensshサーバーを起動します。デフォルトでは、ポート22でSSHサーバーが起動します。必要に応じて、/etc/ssh/sshd_config ファイルでこのポートを変更できます。

 service ssh start

リモート側(クライアントA)でソックスプロキシを起動し、リモートポートをローカルに設定してソックスプロキシに接続します。

 ssh -N -D 127.0.0.1:8888 -p 22 <server-s>
 ssh -N -R 2222:127.0.0.1:8888 -p 22 <server-s>

ローカル側(サーバーS)では、たとえばポート2222のソックスプロキシ設定を使用してGoogleに接続します。

 curl --socks5 127.0.0.1:2222 https://www.google.com

関連情報