我正在开发一个程序,该程序可以创建到中间人服务器的反向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。但日志说连接被拒绝了。并且有一个工作的VNC服务器在端口5900上运行。我可以看到连接请求进来。所以我很确定问题来自与localhost的连接。我真的很感激任何建议/提示。
我在Windows 10上使用libssh 0.7.2并使用msvc进行编译。
答案 0 :(得分:0)
对于反向端口转发,请使用parallelization docs和ssh_channel_listen_forward
。
ssh_channel_open_forward
用于直接端口转发。