3

私は、仲介者サーバーへのリバース 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 でコンパイルしています。

4

1 に答える 1

0

リバース ポート フォワーディングには、 と を使用ssh_channel_listen_forwardssh_channel_accept_forwardます。

ssh_channel_open_forwardダイレクト ポート フォワーディング用です。

libssh を使用したリバース ポート フォワーディングの実行を参照してください。

于 2015-09-29T05:18:26.093 に答える