複数のポートを使用したSSHリモートポート転送

複数のポートを使用したSSHリモートポート転送

私はSSHポートフォワーディングを使用している人やアイデアがある人のために(公共アドレスを持つ)SSHサーバーを介して私のPCからリモートコンピュータ(パブリックアドレスを持たないカメラ)へのリモートトンネルを作成しました。

目的は、SSHリモートポート転送を介してカメラへのアクセスを一般に転送することです。

マイコンピュータで実行するコマンドの形式は次のとおりです。

  ssh -R sshServer_port:destination_address:destination_port sshServer_address

例:

  ssh -R 3000:192.198.1.210:80 [email protected]

sshServerでは、localhost:3000を介してリモートシステムにアクセスできます。

その後、次のようにして一般的にアクセスできるようにtcpproxyを設定しました。

tcpproxy -lhost 0.0.0.0:8080 -rhost localhost:3000

これにより、すべてのネットワークの誰でも52.14.9.210:8080と入力してカメラインターフェイスにアクセスできます。

私が望むのは、2つのリモートシステムポート(httpの場合は80、ライブストリーミングの場合は8000)でリッスンするトンネルを作成することです。コマンドの形式は次のとおりです。

ssh -R sshServer_port:destination_address:destination_port1 -R sshServer_port:destination_address:destination_port2 sshServer_address

例:

ssh -R 3000:192.168.1.210:80 -R 3000:192.168.1.210:8000 [email protected]

コマンドを実行しようとしましたが、次のエラーが発生しました。警告:ポート3000でリッスンするリモートポート転送に失敗しました。

この問題を解決する方法を知っていますか?

答え1

必要なのは、2つのリモートコンピュータポートを受信する1つのトンネルを作成するのではなく、同じリモートポートで受信する2つのトンネルを望むことです。

それは不可能です。 SSHは、着信接続がどのポートに転送されるべきかをどのように知ることができますか?

プロトコルを区別するためのいくつかの解決策がありますが、普遍的な解決策はありません。 httpトラフィックにポート80を使用している場合は、リバースプロキシを設定できますが、両方の宛先に2つの異なるポートを使用する方がはるかに簡単です。

編集する

-gあなたのコメントによれば、他のホストがトンネルに接続できるようにするSSHオプションがありません。

答え2

ralffriedlのヒントのおかげで問題を解決しました。

ステップ1:ポート80のカメラアドレスとポート2233のSSHサーバーの間に最初のリモートポート転送トンネルを作成し、SSHサーバーのlocalhost:2233とポートのサーバーパブリックIPアドレス(52.214.9.211)の間にtcpproxyを設定しました。 4455

ステップ2:ポート8000​​のカメラアドレスとポート2255のSSHサーバーの間に2番目のリモートポート転送トンネルを作成し、SSHサーバーのlocalhost:2255とポートのサーバーパブリックIPアドレス(52.214.9.211)の間にtcpproxyを設定しました。 8000

これにより、外部ネットワークの誰かがブラウザにサーバーのIPアドレスを入力し、カメラのIPアドレスのポート80の転送ポート(52.214.9.211:4455)を追加すると、カメラに接続できます。ポート8000​​で完了ライブ放送要求が行われた場合(例:(52.214.9.211:8000))、サーバーのlocalhost:2255に転送され、カメラのポート8000​​に転送されます。

関連情報