gpt4 book ai didi

ssh - 如何使用 libssh2 进行动态端口转发?

转载 作者:行者123 更新时间:2023-11-28 23:21:45 26 4
gpt4 key购买 nike

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

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

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

谢谢你的帮助。

最佳答案

在 SSH 级别,它们是同一回事。 “本地”和“动态”转发在协议(protocol)方面没有区别——两者都会导致为每个新连接打开一个direct-tcpip channel (在libssh2 是使用 ssh_channel_open_forward() 函数完成的)。

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

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

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

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

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

关于ssh - 如何使用 libssh2 进行动态端口转发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59552762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com