NET的SFTP库


109

谁能推荐一个好的SFTP库使用?现在,我正在研究诸如SecureBlackbox,IPWorks SSH,WodSFTP和Rebex SFTP之类的产品。但是,我以前从未使用过任何SFTP库,因此不确定我要寻找的内容。

如果以前有人使用过这些产品,那么为什么我应该选择产品“ X”而不是“ Y”呢?



有MIT许可的SFTP库吗?
Yash Saraiya

您可以查看详细的审查SFTP组件净thedownloadplanet.com/reviews/...
alexanoid

Answers:


87

我到处搜寻,发现 SharpSSH的这个分叉SSH.NET是.NET中用于SFTP(不要与FTPS混淆)通信的最新和维护最好的库。SSH.NET是SFTP协议的一个干净的.NET 4.0实现,我已经在一些解决方案中使用了它,取得了巨大的成功。

原本的 夏普 似乎已经死了,大多数其他解决方案要么需要安装Windows可执行文件,要么需要大量现金(或更糟的是,两者都有)。


6
我还使用了SSH.NET(sshnet.codeplex.com),发现它非常出色。
亚历克斯

10
我发现SSH.NET马上就存在问题。检查文件/目录是否始终返回true。问题列表中有许多未解决的问题,使我无法参与该项目。
罗尼·欧弗比

1
@RonnieOverby我查找了您提到的关于文件/目录的问题,并且该问题不再存在。我编写了测试SSH.NET的代码,它按预期工作。
科林

4
SharpSSH叉死了太(2012年9月上次更新)。
Martin Prikryl

3
谢谢,进行比较之后,SSH.NET似乎更干净,更易于使用。在完成我在其中使用的项目后,我将更新我的答案。谢谢,
Nour Lababidi '16

52

我们使用WinSCP。免费。它不是一个库,但具有可用于Process.Start的文档完善且功能齐全的命令行界面。

更新:在v.5.0中,WinSCP 对WinSCP的脚本层具有.NET包装器库


1
对我来说看起来不错:winscp.net/eng/docs/library#example
Jon Cage

4
我成功使用了WinSCP .NET程序集(winscpnet.dll),即WinSCP脚本接口上的包装器。是的,确实,有据可查。它有很多例子。如果传递了不正确的参数,则包装器将引发异常,详细说明错误之处。我花了一些试验和错误才能正确设置参数,没有WinSCP的错误,只是我在ftps和sftp之间感到困惑。另外,请记住将WinSCP.exe复制到应用程序bin文件夹中。或者您可以在调用Session.Open()之前设置Session.ExecutablePath。
爱德华

WinSCP是根据GPL许可的。在MIT许可下,有什么我可以使用的东西吗?
Yash Saraiya

1
@YashSaraiya WinSCP .NET程序集是根据MPL 2.0而非GPL许可的。
Martin Prikryl

1
不好,winscp与.exe绑定,对于多平台开发来说这是躲闪的。
Alwyn19年

9

检查一下:http : //www.tamirgal.com/home/dev.aspx?Item=sharpSsh

SharpSSH是SSH2客户端协议套件的纯.NET实现。它提供了用于与SSH服务器通信的API,并且可以集成到任何.NET应用程序中。

该库是JCraft Inc.的JSch项目的C#端口,并以BSD样式许可发布。

SharpSSH允许您使用类似于JSch API的API通过SSH通道读取/写入数据并传输文件。此外,它提供了一些其他包装器类,这些类为SSH通信提供了更简单的抽象。

源伪造的SharpSSH项目页面:http//sourceforge.net/projects/sharpssh


9
很酷的东西,但是自2007年以来就没有更新过,需要
smt

1
请参阅我的答案以获取更新和积极维护的内容。
阿斯比约恩Ulsberg

10
我使用了这个库,不推荐使用。它起作用了,但是感觉像是一个不完整的端口:顶级类中缺少一些功能(测试文件是否存在IIRC),我必须在私有字段上调用方法才能使它们起作用。源代码中留有注释的Java代码块;以Java标准库中的包装器类命名的包装器类;整个Java习语。我改用了SSH.NET(如@asbjornu的文章),取得了巨大的成功。
亚历克斯

8

我们购买了Rebex文件传输包,一切都很好。该API很简单,通讯,代理服务器等都没有问题...

但是我没有机会将其与另一个SFTP / FTPS组件进行比较。


请注意,SFTP和FTPS是不同的协议。
特伦特

6

Bitvise有一个很棒的产品,叫做Tunnelier,可以将FTP桥接到SFTP。然后,您可以在.NET中使用标准的FtpWebRequest。

http://www.bitvise.com/ftp-bridge

我目前正在出于个人目的对其进行测试,并将根据我的发现进行更新。

更新

这个想法对于无人值守的自动化不是理想的选择,除非您想跳过使客户端保持为服务之类的连接,而这是我使用NSSM完成的。

我已经尝试过使用包括bitvise和winscp.com在内的各种客户端进行CLI自动化。我还尝试了以下.net类库:Winscp,SSH.NET,SharpSSH和商用SecureBlackBox SFTP客户端。

SecureBlackBox可以很好地工作,但是它很重,根据许可的不同,它可能会很昂贵,而且我不太同意它的API。

毫无疑问,用于.NET开发的最佳免费sftp客户端是winscp。我编写了一些类和扩展方法以使其更容易使用:Winscp.Extensions


4

我已经使用Chilkat的本地SFTP库(http://www.chilkatsoft.com/ssh-sftp-component.asp)了几个月,并且运行良好。在每晚的工作中使用它来下载大文件并进行私钥身份验证。我遇到的唯一问题是要在Windows Server 2008上运行64位版本,我需要在服务器上安装vcredist_x64.exe(http://www.microsoft.com/download/en/details.aspx?id=14632) 。


2
Chilkat不是100%托管代码。它是包装在.NET中的本机库。当我们合并该库时,由于VS以32位模式运行,因此它破坏了Visual Studio Web设计器。我们必须在dev和prod(这是64位)之间创建所有这些变通办法,以便它可以使用正确的DLL,这很有趣。解决方法要求GAC在目标计算机上安装32位和64位DLL:chilkatforum.com/questions/114/…–
克里斯·史密斯

0

有关.NET中全面的SFTP支持,请尝试edtFTPnet / PRO。支持许多不同的SFTP服务器已有很长时间了。

我们还出售用于Windows的SFTP服务器CompleteFTP,这是一种在Windows计算机上获得对SFTP支持的廉价方法。也有FTP和FTPS。


我使用edtFTPnet库已有一段时间-效果很好,但是.net绑定的文档并不出色。
乔恩·凯奇

0

我使用了IP * Works SSH,它很棒。易于安装和使用。此外,当您遇到问题时,他们的支持是一流的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.