
次のSSHトンネルレイアウトを設定しようとしています。
- クライアントA(Sshサーバーがアクティブではない)は、サーバーSとのSSH接続を開始します。
- ocksサーバーはS:yyyyサーバーで開き、すべてのデータはクライアントAを介して送信されます。
- クライアントBはサーバSのソックスサーバに接続し、tcpデータはクライアントAを介してインターネットにルーティングされる。
考えられる解決策の1つは、クライアントAにプロキシサーバーを追加し(localhost:xxxxにバインド)、クライアントssh -R yyyy:localhost:xxxx Server
Aで実行することです。これは目標を達成します。しかし、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
これが誰かに役立つかどうかはわかりません。ここに私が構築した設定図があります...
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