3

我正在开发一个程序,该程序创建一个到中间人服务器的反向 SSH 隧道,以便本地网络中的计算机仍然可以从该本地网络外部访问,但无法直接连接到该计算机。我为此选择了 libssh 库,但在打开到 localhost 的通道以将传入数据转发到本地应用程序时遇到问题。打开 SSH 会话并请求将数据转发到本地计算机似乎工作正常。但是,我无法打开到 localhost 的通道来从本地应用程序读取数据和向本地应用程序写入数据。我目前尝试打开与 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 回答