在寻找 C# SSH 文件传输协议 (SFTP) 中的 SFTP 客户端时,我遇到了这两个合适的项目 - .

在尝试了解基础知识时,我遇到了这个令人困惑的问题 维基百科文章. 。SFTP 和 SSH 上的 FTP 有什么区别?如果不同的话,似乎没有库支持“FTP over SSH”。

有帮助吗?

解决方案

区别如下:

  • SFTP (SSH 文件传输协议)是一种提供文件传输和操作功能的协议。它可以处理任何可靠的数据流,但通常与 SSH 一起使用
  • “FTP over SSH”使用常规的旧 FTP 协议,但是 SSH隧道 放置在客户端和服务器之间。

您可能找不到“FTP over SSH”的库,因为通常隧道是通过运行 SSH 命令来设置的,设置完成后,客户端和服务器不需要了解隧道;他们只是打开端口并以没有隧道的方式传输数据。

顺便说一句,您的另一个选择可能是 基于 SSL 的 FTP (FTPS), ,受 .NET 支持。(看 http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx.)

其他提示

基本上,有以下文件传输协议:

  • FTP – 自 20 世纪 70 年代以来一直存在的普通旧 FTP 协议。该缩写词代表“文件传输协议”。它通常在 TCP 端口 21 上运行。

  • SFTP – 另一种完全不同的文件传输协议,与 FTP 无关。SFTP 通过 SSH 会话运行,通常在 TCP 端口 22 上。它自 20 世纪 90 年代末以来一直存在。该缩写词实际上代表“SSH 文件传输协议”。

  • 通过 SSH 的 FTP - 1) 可能,但极其罕见的通过 SSH 通道建立隧道的 FTP 协议示例 2) 错误命名为 SFTP

(详情参见“安全 FTP、FTP/SSL、SFTP、FTPS、FTP、SCP...有什么不同?“页面位于 雷贝克斯)

免责声明:我为 Rebex 工作

SFTP实际上是运行在SSH另一个协议 - SSH的扩展如果你喜欢。人们倾向于使用SFTP而不是通过SSH隧道FTP。

有关在.NET全面SFTP支持尝试 edtFTPnet / PRO 。它已经存在很长一段时间,许多不同的SFTP服务器的支持。

SFTP是它自己的协议。 FTP通过SSH是使用FTP一旦你通过SSH连接。

FTP通过SSH是通过SSH隧道平原FTP协议。 SFTP是通过SSH提供的文件传输机制,这是一个完全不同的协议。我还没有看到使用FTP通过SSH任何人。

  • SFTP 代表 SSH 文件传输协议。它不是基于 SSL 的 FTP,也不是基于 SSH 的 FTP。SFTP 在 RFC 4253 中进行了标准化。
  • FTP 代表文件传输协议,由 RFC 959 及后续补充定义。FTP 非常流行,但并不安全。因此引入了 FTP over SSL,称为 FTPS 或 FTP/SSL。

对于身份验证,SFTP 使用 SSH 密钥,而 FTPS 使用 X.509 证书。

我用SharpSSH多年,它的伟大工程。虽然还没有看到在一段时间的任何发展,源代码很容易理解和使用。我做了调整和重新编译为我自己,没有麻烦的项目,但它工作得很好原样,而不需要任何的。

如果您不需要做任何幻想,你也可以写为PuTTY的PSFTP.EXE客户自己的.NET包装用很小的代码。

虽然我从来没有用过格雷格Finzer的SFTP图书馆,我认识他,并坚信他有一个高质量的产品,如果你需要的东西,积极发展和强大。但对于简单的东西,我已经与我所提到的自由选择了巨大的成功。

我刚创建一个 .NET SFTP库。有一个问题我在这个过程中学习到的东西是FTP怎样不同的是SFTP。你实际上是用SSH服务器,而不是一个FTP服务器进行通信。这不只是协议,命令是完全不同的,你要发送到SSH服务器。

下面是href="http://www.kellermansoftware.com/p-41-net-sftp-library.aspx" rel="nofollow noreferrer">链接到我的库中的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top