![動的ランダムポートが原因でリモートポート経由でサーバーに接続できない](https://rvso.com/image/1604257/%E5%8B%95%E7%9A%84%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E5%8E%9F%E5%9B%A0%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%9D%E3%83%BC%E3%83%88%E7%B5%8C%E7%94%B1%E3%81%A7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84.png)
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
) またはサーバー上の何かによって影響を受ける可能性がありますが、この限られた情報から推測するのは困難です。