【问题标题】:How to do Dynamic port forwarding with libssh2?如何使用 libssh2 进行动态端口转发?
【发布时间】:2020-01-01 21:03:02
【问题描述】:

我想在我的 iOS(objective c) 应用程序中实现动态端口转发。

我已经使用 libssh2 库完成了本地和远程端口转发。我认为这个库只提供本地和远程端口转发功能。

谁能建议如何使用此库或任何其他提供此功能的库进行动态端口转发?

感谢您的帮助。

【问题讨论】:

    标签: ssh ios objective-c


    【解决方案1】:

    在 SSH 级别,它们是相同的。 “本地”和“动态”转发之间在协议方面没有区别 - 它们都会导致为每个新连接打开一个 direct-tcpip 通道(在 libssh2 中使用 ssh_channel_open_forward( ) 函数)。

    在这两种情况下,客户端应用程序都会侦听 TCP 端口,并且每当收到连接时,它都会通过 SSH 创建一个“direct-tcpip”通道并来回复制数据。

    唯一的区别是面向用户的行为,这完全在 SSH 应用程序本身中实现:

    • 在“本地”转发中,SSH 客户端预先配置了目标主机:端口,并且它始终打开到该特定目标的直接 tcpip 通道。
    • 在“动态”转发中,SSH 客户端使用 SOCKS5 协议来动态确定要连接的主机:端口。

    因此,如果您只需要在内部打开“转发”连接(出于应用程序自身的目的),那么只需使用 ssh_channel_open_forward() 即可直接从该通道读取/写入。

    如果您想像“ssh -D”那样接受 SOCKS5 客户端,那么您的应用需要处理整个“SOCKS5 服务器”部分。这不是 SSH 库知道或关心的事情。

    【讨论】:

    • 感谢@user1686 的回答。这真的很有帮助。你能建议如何做“ssh -D”以及如何处理“SOCKS5 服务器”部分吗?我是新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多