动态端口转发 libssh C
Posted
技术标签:
【中文标题】动态端口转发 libssh C【英文标题】:Dynamic port forwarding libssh C 【发布时间】:2013-10-29 10:00:07 【问题描述】:我正在寻找一种解决方案/方法来实现 ssh 中内置的动态端口转发功能(也称为 -D 选项)。我最近一天一直在阅读,我似乎找不到可靠的图书馆来帮助解决这个问题。
我发现 ssh.net 是一个 C# 库,但是它的动态端口转发被破坏了,它的代理处理程序不会转发 dns 请求而破坏了几乎所有内容。我已经将代码修补到了半工作状态,但它并不稳定,而且真的很慢。
我现在正在研究 libssh,它具有端口转发选项,尽管它没有生成要使用的 socks 服务器的动态选项。我想我必须自己做。
如果是这样,我是否必须在客户端和服务器上都运行一个 socks 服务器,然后只使用普通的 tcpip 转发隧道,或者什么。我将如何尝试实现这一点。
总的来说,我想找到一种方法来实现与 ssh 上的 -D 选项或 putty 在创建隧道时的作用相同的效果。任何有关此的链接或一般信息,甚至代码/库示例,都将不胜感激。
其他说明:这是针对 Windows 的,因此需要跨平台或仅 Windows 的库。此外,我似乎无法弄清楚如何使用 mingw 或 cygwin 编译 libssh2,以便该库不可用。
感谢您的宝贵时间。
【问题讨论】:
嗨@randy。你让它工作了吗?我正在努力实现同样的目标 【参考方案1】:我现在正在研究 libssh,它有端口转发选项,虽然它没有 有一个动态选项,它会生成一个 socks 服务器来使用。我想我必须自己做这件事。
libssh 为您提供使用 SSH 协议实现动态转发的一切。
【讨论】:
您愿意解释一下我应该使用/研究的一般设置和转发功能吗? socks 服务器是生成服务器端、客户端还是两者兼而有之?我只使用普通的 TCP 转发吗?您能否对此进行更多扩展以帮助澄清您的答案?谢谢。 根据我在网上找到的这张图片,socks服务器只是客户端,所以使用libssh,如何告诉服务器它想要创建一个动态隧道。我在连接时是否有一个标志来告诉它使用 socks 协议来知道在哪里连接? 你必须实现 socks 服务器。 libssh 只实现了 SSH 协议。 你能详细说明@asn 吗?有我们可以使用的示例代码吗?以上是关于动态端口转发 libssh C的主要内容,如果未能解决你的问题,请参考以下文章
安全牛学习笔记SSH远程端口转发和动态端口转发以及X协议转发