私は、仲介者サーバーへのリバース SSH トンネルを作成して、直接接続できないローカル ネットワーク内のコンピューターに、そのローカル ネットワークの外部からアクセスできるようにするプログラムに取り組んでいます。これには libssh ライブラリを選択しましたが、受信データをローカル アプリケーションに転送するために localhost へのチャネルを開くのに問題があります。SSH セッションを開き、ローカル コンピューターへのデータ転送を要求すると、問題なく動作するようです。ただし、localhost へのチャネルを開いて、ローカル アプリケーションとの間でデータを読み書きすることはできません。現在、ローカルホストへの接続を開こうとしている方法:
ssh_channel localhost_channel = ssh_channel_new(my_ssh_session);
rc = ssh_channel_open_forward(localhost_channel, "127.0.0.1", 5900,
"localhost", 5555);
if (rc != SSH_OK) {
myLog << "Could not open channel to localhost";
exit(-1);
}
プログラムが終了しないため、SSH_OK が設定されています。ただし、ログには、接続が拒否されたことが示されています。また、ポート 5900 で実行されている VNC サーバーが動作しています。接続要求が着信していることがわかります。したがって、問題は localhost との接続に起因していると確信しています。アドバイスやヒントをいただければ幸いです。
Windows 10 で libssh 0.7.2 を使用し、msvc でコンパイルしています。