c - 使用 libssh 打开到本地主机的 channel

标签 c ssh libssh

我正在开发一个程序,它可以创建到中间人服务器的反向 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_forwardssh_channel_accept_forward .

ssh_channel_open_forward 用于直接端口转发。

参见 Doing reverse port forwarding with libssh .

关于c - 使用 libssh 打开到本地主机的 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819678/

相关文章:

linux - 在 Linux 上,如何创建具有 sudo 能力的受限 shell

amazon-web-services - 保护为 AWS EC2 生成的私钥

java - 使用 Android App 在 Raspberry Pi 上执行 SSH 命令

c++ libssh - ssh_channel_read() 一直返回 0 而 ssh_channel_is_open() 返回 false

c++ - 尝试 libssh 身份验证时的核心转储

c++ - 为什么可执行文件这么大? (为什么不删除死代码?)

c - 增加引用计数的经验法则是什么?

c - 如何使用共享库编译 GCC?

c++ - 将多态 C++ 对象转换为非多态 C 对象

尽管遵循此处和其他地方的说明,但无法在 Raspbian 中使用 libssh 编译代码