如何以编程方式在C / C ++跨平台中创buildssh隧道?

我需要通过TCP连接到防火墙后面的端口,可以通过SSH隧道访问。 我可以通过打开一个隧道和连接端口来实现连接,但是我想要将这个隧道连接到我的应用程序中。

另外,我希望能够通过在服务器上使用授权密钥来提供自动login

这必须在以下平台上工作(按重要性sorting)

  • iOS(最棘手的,因为我不能像在其他平台上分叉ssh隧道)
  • OS X
  • Linux的
  • 视窗

有什么简单的方法来做到这一点? 我不想花很多的努力,因为这不是我的申请的肉。 但是我会重复使用它,所以我可能会很在意“做正确的事情”

但是libssh2是BSD许可的,似乎具有所需的功能

看起来像:将调用libssh2_channel_direct_tcpip_ex

请注意 ,LGPL的libssh是一个问题,因为在iOS应用程序中,您必须静态链接并且不能动态链接到库。 因此,使用LGPL的库意味着我的源代码变成了开源代码。

Libssh是SSH协议的一个非常好的客户端实现。 我已经写了一个关于这个的博客 。 还有一个示例应用程序演示相同的。 我们在MONyog (MySQL监视器)中使用相同的技术。

有一个商业的LIB,如果你想看一下,www.chilkatsoft.com/,它是一个适用于所有语言的genric C ++库,其中有一个支持SSH隧道的IOS。

LGPL是否区分动态链接和静态链接? 我不这么认为。

库代码(即嵌入你自己的SSH实现)看起来是最通用的。 除了你可能继承安全问题的事实。

在MacOSX / Linux / Unix上,你可以简单地调用'ssh'并假定它存在(或者作为一个先决条件)。 在Windows上,你将依靠腻子和朋友。 我不认为这是个好主意。