動的ランダムポートが原因でリモートポート経由でサーバーに接続できない

動的ランダムポートが原因でリモートポート経由でサーバーに接続できない

SSH とポート転送を介してスーパーコンピューターに接続しようとしています。

このアプリケーションは、サーバーとクライアントの両方で C++ です。

ポートデータは次のとおりです:

// default values
server_address = "localhost";
port = 12346;

次のようにしてサーバーに接続します。

ssh -Y <adress> -L12346:localhost:12346 -l <username>

(これも試しました)

ssh -Y <adress> -L12346:127.0.0.1:12346 -l <username>

私のアプリケーションは、次のログ メッセージとともにサーバー上で起動します:

INFO:  startServer: Port 12346 on server <SERVERNAME> opened and waits client.

ここまではすべて順調です。

しかし、他のコンピューターに接続しようとすると、サーバーは次のログで拒否します。

debug1: Connection to port 12346 forwarding to 127.0.0.1 port 12346 requested.
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Connection refused
debug1: channel 3: free: direct-tcpip: listening port 12346 for 127.0.0.1 port 12346, connect from 127.0.0.1 port 45446 to 127.0.0.1 port 12346, nchannels 4

ここのポート (45446) は設定しておらず、動的であるため常に変化します。

アプリケーション (サーバー - クライアント接続) は、デスクトップ上で両方を実行すると完璧に動作します。

どのような推薦でも歓迎します。

答え1

ポートは45446アプリケーションが実行されているポートであり、常にランダムです。気にする必要はありません。

気になるのは、上記の行で接続が拒否された理由です。これは、ssh がポート 123456 に接続しようとしたが、接続が成功しなかったことを意味します。これは、サーバー構成 ( PermitOpen) またはサーバー上の何かによって影響を受ける可能性がありますが、この限られた情報から推測するのは困難です。

関連情報