.NET 的 SFTP 库 [关闭]

Posted

技术标签:

【中文标题】.NET 的 SFTP 库 [关闭]【英文标题】:SFTP Libraries for .NET [closed] 【发布时间】:2010-10-06 12:44:51 【问题描述】:

谁能推荐一个好的 SFTP 库来使用?现在,我正在研究 SecureBlackbox、IPWorks SSH、WodSFTP 和 Rebex SFTP 等产品。但是,我之前从未使用过任何 SFTP 库,所以我不确定我在寻找什么。

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

【问题讨论】:

How do I upload a file to an SFTP server in C# / .NET? 的可能重复项 是否有获得 MIT 许可的 SFTP 库? 您可以查看 SFTP Component for NET 的详细评论thedownloadplanet.com/reviews/… 【参考方案1】:

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

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

【讨论】:

请注意,SFTP 和 FTPS 不是同一个协议。 确实,SFTP在很容易与“HTTPS FTP”混淆,但它是SSH FTP。【参考方案2】:

看看这个:http://www.tamirgal.com/home/dev.aspx?Item=sharpSsh

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

该库是 JSch 的 C# 端口 JCraft Inc. 的项目,是 在 BSD 风格许可下发布。

SharpSSH 允许您读取/写入数据 并通过 SSH 通道传输文件 使用类似于 JSch 的 API 的 API。在 此外,它提供了一些额外的 甚至提供的包装类 更简单的 SSH 抽象 交流。

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

【讨论】:

很酷的东西,但自 2007 年以来就没有更新过,需要 .net 4 查看我的回答,了解更新和积极维护的内容。 我用过这个库,不推荐。它有效,但感觉像是一个不完整的端口:***类中缺少一些功能(测试文件是否存在 IIRC),我必须调用私有字段上的方法才能让它们工作;注释掉源代码中留下的 Java 代码块;以 Java 标准库中的包装类命名的包装类; Java 成语贯穿始终。我已经改用 SSH.NET(如@asbjornu 的帖子)并取得了巨大的成功。【参考方案3】:

要在 .NET 中获得全面的 SFTP 支持,请尝试 edtFTPnet/PRO。它支持许多不同的 SFTP 服务器已经存在很长时间了。

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

【讨论】:

我使用 edtFTPnet 库已经有一段时间了 - 效果很好,但 .net 绑定的文档不是很好。【参考方案4】:

我们使用 WinSCP。免费。它不是一个库,但有一个文档齐全且功能齐全的命令行界面,您可以将其与 Process.Start 一起使用。

更新:在 v.5.0 中,WinSCP 有 a .NET wrapper library 到 WinSCP 的脚本层。

【讨论】:

对我来说看起来不错:winscp.net/eng/docs/library#example 我成功使用了 WinSCP .NET 程序集 (winscpnet.dll),WinSCP 脚本接口上的包装器。是的,确实,它有据可查。它有很多例子。如果您传入不正确的参数,包装器会抛出一个异常,详细说明什么是错误的。我花了一些试验和错误来获得正确的参数,不是 WinSCP 的错,只是我在 ftps 和 sftp 之间的混淆。另外,记得将 WinSCP.exe 复制到应用程序 bin 文件夹中;或者您可以在调用 Session.Open() 之前设置 Session.ExecutablePath。 WinSCP 在 GPL 下获得许可。有什么我可以在 MIT 许可下使用的东西吗? @YashSaraiya WinSCP .NET assembly is licensed under MPL 2.0,不是 GPL。 不好,winscp 是绑定到 .exe 的,这对于多平台开发来说是很狡猾的。【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

Chilkat 不是 100% 托管代码。它是一个包装在 .NET 中的本机库。当我们合并这个库时,它破坏了 Visual Studio 网页设计器,因为 VS 在 32 位模式下运行。我们必须在 dev 和 prod(64 位)之间创建所有这些变通方法,以便它可以使用正确的 DLL,而不是有趣。解决方法要求 GAC 在目标机器上安装 32 位和 64 位 DLL:chilkatforum.com/questions/114/…【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

我也使用过 SSH.NET (sshnet.codeplex.com),发现它非常棒。 我发现 SSH.NET 马上就有问题。检查文件/目录是否存在总是返回 true。问题列表中的许多未决和赞成的问题使我退出了该项目。 谢谢,比较之后,SSH.NET 似乎更干净,更易于使用。完成我正在使用它们的项目后,我会更新我的答案。谢谢, 更新 - SSH.NET 自 2017 年以来未更新,我发现该库无法再处理使用现代密码连接到 SFTP 服务器。 @xSx, SSH.NET 最后一次更新是在 21 天前,所以我会说“是”。

以上是关于.NET 的 SFTP 库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否有使用用户、密码和私钥/公钥来验证 SFTP 的 PHP 库? [关闭]

Java SFTP 服务器库? [关闭]

Java SFTP 传输库 [关闭]

用于Java的FTP和SFTP文件下载库[关闭]

通过 SSIS 处理 SFTP 或 FTPS 文件的最佳方法 [关闭]

文件系统之-JAVA Sftp远程操作: