用于.NET的SFTP库

106 .net c# sftp

任何人都可以推荐一个好的SFTP库使用?现在我正在寻找SecureBlackbox,IPWorks SSH,WodSFTP和Rebex SFTP等产品.但是,之前我从未使用过任何SFTP库,因此我不确定我在寻找什么.

如果有人之前使用过这些产品,有什么理由说我应该使用产品"X"而不是"Y"吗?

Asb*_*erg 82

我搜索四周,发现这个叉SharpSSH的SSH.NET是最最新的和最好保持库SFTP(不要与混淆FTPS在.NET通信).SSH.NET是SFTP协议的一个干净的.NET 4.0实现,我已经在一些解决方案中使用了它,并且有很多成功.

最初的SharpSsh似乎已经死了,大多数其他解决方案要么安装Windows可执行文件,要么需要大量现金(或更糟糕的是两者).

  • 我发现SSH.NET是马上的错误.检查文件/目录是否总是返回true.问题清单中的许多公开和受欢迎的问题让我无法参与该项目. (8认同)
  • 我也使用过SSH.NET(http://sshnet.codeplex.com/),发现它非常棒. (6认同)
  • [SharpSSH fork](https://bitbucket.org/mattgwagner/sharpssh)也已死(最后更新于2012年9月). (4认同)
  • 谢谢,在比较它们之后,SSH.NET似乎更清晰,更易于使用.完成我正在使用它们的项目后,我会更新我的答案.谢谢, (3认同)
  • 更新 - SSH.NET 自 2017 年以来一直没有更新,我发现该库无法再处理使用现代密码连接到 SFTP 服务器的情况。 (2认同)
  • @xSx,[SSH.NET](https://github.com/sshnet/SSH.NET) 上次更新是在 21 天前,所以我对此说“是”。 (2认同)

小智 50

我们使用WinSCP.免费.它不是一个lib,但有一个记录良好且功能齐全的命令行界面,可以与Process.Start一起使用.

更新:使用v.5.0,WinSCP有一个.NET包装器库到WinSCP的脚本层.

  • 我成功使用WinSCP .NET程序集(winscpnet.dll),WinSCP脚本界面上的包装器.是的,真的,它有很好的记录.它有很多例子.如果传入不正确的参数,则包装器会抛出一个异常,详细说明错误.我花了一些试验和错误来获得正确的参数,没有WinSCP的错误,只是我在ftps和sftp之间的混淆.另外,请记住将WinSCP.exe复制到应用程序bin文件夹; 或者您可以在调用Session.Open()之前设置Session.ExecutablePath. (4认同)
  • 不好,winscp 与 .exe 绑定在一起,这对于多平台开发来说很危险。 (2认同)

GEO*_*HET 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通信提供了更简单的抽象.

源码forge的SharpSSH项目页面:http: //sourceforge.net/projects/sharpssh

  • 我使用这个库,不推荐它.它工作,但感觉就像一个不完整的端口:顶级类中缺少一些功能(测试文件是否存在于IIRC),我不得不在私有字段上调用方法以使它们工作; 注释掉源代码中留下的Java代码块; 以Java标准库中的名称命名的包装类; Java习语贯穿始终.我已经使用了SSH.NET(如在@ asbjornu的帖子中),取得了巨大的成功. (10认同)
  • 酷的东西,但自2007年以来没有更新,需要.net 4的smth (9认同)

TcK*_*cKs 6

我们买了一个Rebex文件传输包,一切都很好.API很简单,我们对通信,代理服务器等没有任何问题......

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


Ron*_*rby 5

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

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

我目前正在为自己的目的对此进行测试,并将根据我的发现进行更新.

更新

这个想法对于无人值守的自动化来说并不理想,除非你想通过箍环保持客户端连接作为服务或其他东西,这是我通过使用NSSM完成的.

我已经尝试过各种客户端的CLI自动化,包括bitvise和winscp.com.我也尝试过这些.net类库:Winscp,SSH.NET,SharpSSH和商业SecureBlackBox SFTP客户端.

SecureBlackBox运行良好,但它非常重,根据许可证可能相当昂贵,而且我对它的API不太满意.

动手,.NET开发的最佳免费sftp客户端是winscp.我编写了一些类和扩展方法,以便更轻松地使用它:Winscp.Extensions