我正在开发一个程序,它可以创建到中间人服务器的反向 SSH 隧道,这样本地网络中无法直接连接的计算机仍然可以从本地网络外部访问。我为此选择了 libssh 库,但在打开到本地主机的 channel 以将传入数据转发到本地应用程序时遇到了问题。打开 SSH session 并请求将数据转发到本地计算机似乎工作正常。但是我无法打开到本地主机的 channel 以从本地应用程序读取数据或向本地应用程序写入数据。我目前尝试打开与本地主机的连接的方式:
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 上运行。我可以看到连接请求进入。所以我很确定问题出在与本地主机的连接上。如果有任何建议/提示,我将不胜感激。
我在 Windows 10 上使用 libssh 0.7.2 并使用 msvc 进行编译。
最佳答案
对于反向端口转发,使用ssh_channel_listen_forward
和 ssh_channel_accept_forward
.
ssh_channel_open_forward
用于直接端口转发。
关于c - 使用 libssh 打开到本地主机的 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819678/