どのサーバーで ssh ポート転送コマンドを実行すればよいですか?

どのサーバーで ssh ポート転送コマンドを実行すればよいですか?

私はMacbook A、パブリックサーバーB(public IP: 1.2.3.4, internal IP: 10.0.0.2)、社内サーバーを持っていますC(internal IP: 10.0.0.3)

ABBのパブリックIPで接続でき、 CのプライベートIPBで接続できますが、直接接続することはできません。CAC

C:2345今、からに接続したいのですAが、 でポート転送を行うことができると思いますかB:1234=>C:2345?

どのコマンドをどのサーバーで実行すればよいですか?

私は試した:

ssh -NfR 1234:localhost:2345 10.0.0.3
ssh -L 1234:0.0.0.0:2345 10.0.0.3

どちらも機能しません。

答え1

やることその通りあなたがリクエストしたもの ( B:1234=>C:2345) は以下で実行されますB:

# Not recommended. Read along.
ssh -NgL 1.2.3.4:1234:localhost:2345 10.0.0.3

また、ファイアウォール1234のポートを開く必要もありますB。次に、1.2.3.4:1234外部からに接続すると、 自体10.0.0.3:2345から接続しているかのようにC(ループバック インターフェイス経由で) アクセスできます。誰でも接続できるため、(どのサーバーであっても) 上のサーバーがパスワードで保護されていない場合などに注意してくださいC


Aからへアクセスするより簡単で安全な方法はC次のとおりです。 正確には要求どおりではありませんが、おそらく必要なことです。 についてA:

ssh -NL 1234:10.0.0.3:2345 1.2.3.4

次に、127.0.0.1:1234のに接続してAのポートにアクセスします。2345から入ってくるトラフィックを確認できます。この接続は のみが使用できるため、この方法は前の方法よりもはるかに安全です。CCBA

他のコンピュータ(たとえば、LAN からA)が接続できるようにするには、-gオプションを使用してバインド アドレスを指定する必要があります。例:

ssh -NgL A_LAN_address_here:1234:10.0.0.3:2345 1.2.3.4

この場合は、 のファイアウォールをA適切に再設定してから に接続しますA_LAN_address_here:1234

答え2

Macではまず

ssh -L2345:10.0.0.3:2345 10.0.0.2

これにより、Mac のローカル ポート 2345 が開き、10.0.0.3 の :2345 に直接接続されます。

その後、127.0.0.1:2345Mac で にアクセスするだけです。このポートに送信されるすべての内容は ssh 経由でトンネルされ、 に送信されます10.0.0.3:2345。そのサーバーには、 から送信されたように見えます10.0.0.2

関連情報