在C/C++中使用Windows API进行SSH连接?

6

我目前有两个应用程序,一个在Windows上,一个在Linux上。它们需要一起工作(存在套接字交互等)。

我需要以某种方式制作一个应用程序,但我仍然需要在Linux端运行。

我想要的是在Windows中提供一些API来打开SSH连接(我认为telnet连接也可以,不确定),并通过它分派一些命令到我的Linux PC(开始发送一些东西)。

我只能使用C/C++中的VS2005 Windows API。我用过plink一段时间,它非常好用,但我不能安装第三方软件来使其工作。

非常感谢您的帮助。


什么关于Putty?Mingw添加了图形界面(但设置较困难)。 - xhudik
@xhudik,如问题所述,plink是PuTTY套件的一部分。 - Joshua
我已经成功地将Putty“库化”,使其能够与我的Win32 C/C++应用程序配合使用。这不是即插即用的——我必须编写一些粘合代码,但是我能够仅导入Putty的ssh/rlogin/telnet/socket部分作为静态库来使用。 - CoreyStup
正如我所提到的,我不能在我的解决方案中使用第三方应用程序/库(可悲的是)。Putty可能可以,因为它几乎是每台PC上必备的。如何将命令分派给Putty(类似于plink)?我坚持这样做的原因是因为当Putty是任何PC上都可以找到的东西时,我不能强迫人们获取plink(即使它可以从PUTTY网站下载)。 - fashasha
1
PuTTY是一个GUI应用程序,用于用户交互,PLink用于编程控制。试图强行颠倒它们的作用将不容易。另外,如果PuTTY是标准的,那么它是如何安装的?如果通过安装包安装,则包括PLink。如果只是分发可执行文件,则需要费力地寻找它。 - Deanna
显示剩余2条评论
3个回答

4

我个人没有使用过,但libssh看起来很适合你的需求。


1
除非我理解错了,libbsh是第三方库。对吗? 我不能使用这些 :( - fashasha
1
没有“开箱即用”的API可以做到这一点。这就是为什么人们建立了这些SSH库和应用程序的原因。libssh具有你想要的最小的足迹差异。另一种选择是自己重写所需的函数,或者修改一些现有的公共领域代码,将所需的位获取到你的代码库中。此时,你必须问自己,谁的愚蠢想法是禁止第三方库? - Steve Townsend

3

2

在Windows中没有原生的SSH客户端(或库)。如果您不想从头开始做这件事,那么我建议您再次查看PuTTY及其相关程序。这些程序可以与您的应用程序一起分发,因此不需要额外的安装。它还是开源的,因此(根据许可证)您可能能够重用/移植其中的一些代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接