次のオープンサーバーを備えたシステムBがあります。ポート80でリッスンしているWebサーバーと22でリッスンしているsshサーバーがあります。ただし、公開されているのはポート22のみです。ここで、AからB:80にアクセスできるように、ある種のトンネルを作成したいと思います。ただし、システムBに接続したいクライアントコンピューターAも公開されていません。
したがって、私が持っているのは、サーバーBにアクセスしたいクライアントコンピューターAと、開いているポート22だけです。Aでは、ポートが開いていないか、開くことができません。
私が必要とするのは(私が思うに)ローカルに(Aで)Bのポート22を介してBのポート80に何らかの方法で接続するポートを開くことです。
これは、複数のポートを備えた中間者オープンサーバーを使用しない可能性がありますか?
(注:ジャクジェは、私が答えを作成しているときに答えました。最初からより複雑なので、とにかく投稿します。)
正しければ、SSH経由でローカルポートを転送するだけです。 B
へのSSHアクセスがあると仮定します。
A
で実行するLinuxコマンド:
ssh -NL 2345:127.0.0.1:80 B
これで、A
のポート2345
に接続できます。これは、B
自体からB
の80
ポートに接続するのと同じです。 。
いくつかの発言:
-N
により、ssh
はリモート(B
)側でコマンドを実行しません。ポートフォワーディングに最適です。2345
は任意に選択されます。 1024
から65535
までの任意の数にすることができます(通常、1024
より低いポートにバインドするにはrootアクセスが必要です)。すでに占有されているポートにたまたまヒットした場合は、別の番号を試してください。127.0.0.1
アドレスでは、B
上のWebサーバーがloopback
インターフェースでリッスンする必要があります。他のアドレスのみをリッスンする場合は、代わりに使用してください。このアドレスは、システムB
内から見たサーバーの有効なアドレスである必要があります。このアドレスがA
にとって何を意味するのか、そもそも何かを意味するのかはまったく問題ではありません。C
の2345
転送ポートに接続するためにコンピューターA
が必要な場合は、ssh -g
オプションに精通している必要があります。 man ssh
をお読みください。ローカルポート転送を使用する:
ssh -L 80:localhost:80 B
次に、localhost:80
に接続します。接続はB
のポート80に転送されます