私はsshトンネルレイアウトを設定しようとしています:
可能な解決策は、クライアントAにプロキシサーバーを追加し(localhost:xxxxにバインド)、クライアントAで実行することですssh -R yyyy:localhost:xxxx Server
。それは目標を達成するでしょう。しかし、これはsshを使用する場合ほどきれいではありません。
AのsshクライアントとSのssh-serverだけでこれを実現することは可能ですか?これはsshでのreverse-dynamic-port-forwardingのようなもので、AからSへのssh -D
を作成してから、このトンネルにSからAへのssh -D
の2番目のトンネルを設定します。やや混乱し、わかりません可能なら。
OpenSSH 7.6 ネイティブオプションとしてリバースダイナミックプロキシを導入。これは完全にクライアントに実装されるため、サーバーを更新する必要はありません。
ssh -R 1080 server
私はこれを探していて、 スタックオーバーフロー で同じ(または同様の)質問に出くわしました。
クライアントAでssh -R \*:24680:localhost:12345 serverS
、次に(まだクライアントAで)ssh -D 12345 localhost
[1]
あなたは need を\*
ビットに追加し、localhostだけでなくサーバーSのパブリックIPアドレスにバインドするようにします。
次に、クライアントBでserverS:24680
にあるsocksサーバーに接続します。
[1]編集:クライアントAがSSHサーバーを持っていない場合、それ自体はsshできないため、これは機能しないことに気づきました。クライアントAにSSHサーバーがあり、サーバーSからはアクセスできないセットアップを考えていました。しかし、クライアントAに socks server をインストールしてポートで開くことができれば、同様のセットアップが引き続き機能します。 12345。
これが誰かに役立つかどうかわからない、これは私が構築することができた私のセットアップの図です...
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
1つはMACHINE_Aで処理し、もう1つはポート22344(オリーブ)でリッスンしている再生サーバーです。
MACHINE_Aのライトグリーンプロセスが接続を要求すると、MACHINE_Bのライトグリーンプロセスが表示されます...
この目的のためにssh
と呼ばれるssf
に代わるものがあり、-F
フラグを使用して逆動的ソックスを作成できます。
SSFクライアントの
-F port
オプションは、SSFターゲットサーバーマシン上の指定されたポートを開き、SOCKS要求をSSFクライアントに転送します。 SSFクライアントはSOCKSサーバーとして機能します。https://securesocketfunneling.github.io/ssf/#how-to-use-socks
リモートにssfd
がインストールされ、ローカルにssf
がインストールされている場合、sshを使用してこれを設定できます。
ssh -o"LocalCommand=ssf -F 1234 -p 10000 server" -f user@server ssfd -p 10000
これにより、リモートサーバーのポート1234でSOCKSを使用して、クライアントマシン経由でインターネットにアクセスできます。