SFTP 和“通过 SSH 的 FTP”之间的区别

Posted

技术标签:

【中文标题】SFTP 和“通过 SSH 的 FTP”之间的区别【英文标题】:Differences between SFTP and "FTP over SSH" 【发布时间】:2010-10-01 05:26:09 【问题描述】:

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

在尝试了解基础知识时,我遇到了这个令人困惑的Wikipedia article。通过 SSH 的 SFTP 和 FTP 有什么区别?如果不同,似乎没有库支持“通过 SSH 的 FTP”。

【问题讨论】:

也可以看这篇文章:(FTP和SFTP协议的区别)componentpro.com/… 【参考方案1】:

这里有区别:

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

您可能找不到“FTP over SSH”的库,因为通常隧道是通过运行 SSH 命令来设置的,一旦设置好,客户端和服务器就不需要知道隧道了;他们只是打开端口并以他们在没有隧道的情况下使用的方式传输数据。

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

【讨论】:

"你可能找不到 'FTP over SSH' 的库" - 至少有一个 :-)。 Rebex 文件传输包 (rebex.net/file-transfer-pack/default.aspx) 能够通过 SSH 通道运行 FTP。这是可能的,因为我们的 SshSession 类可以用作 Ftp 类的(某种)代理(从技术上讲,它可以用作为 FTP 组件创建通信套接字的类工厂)。它甚至能够通过 SSL 通道(而不是通过 SSH)运行 SFTP 协议等奇怪的协议,但是我们还没有找到任何支持它的服务器。【参考方案2】:

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

FTP – 自 1970 年代以来一直存在的普通旧 FTP 协议。首字母缩写词代表“文件传输协议”。它通常在 TCP 端口 21 上运行。

SFTP – 另一种完全不同的文件传输协议,与 FTP 无关。 SFTP 通过 SSH 会话运行,通常在 TCP 端口 22 上运行。它从 1990 年代后期就已经存在。该首字母缩写词实际上代表“SSH 文件传输协议”。

通过 SSH 的 FTP - 1) 可能,但通过 SSH 通道隧道传输的 FTP 协议的例子极为罕见 2) 错误命名的 SFTP

(详情见“Secure FTP, FTP/SSL, SFTP, FTPS, FTP, SCP... What's the difference?”页面Rebex)

免责声明:我为 Rebex 工作

【讨论】:

【参考方案3】:

SFTP 实际上是另一种通过 SSH 运行的协议 - 如果您愿意,它是 SSH 的扩展。人们倾向于使用 SFTP,而不是通过 SSH 建立隧道 FTP。

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

【讨论】:

【参考方案4】:

这里有一个简单的解释:

FTPS = FTP + SSL SFTP = 使用 FTP 程序的 SSH

https://www.webstix.com/knowledgebase/general/how-to-connect-using-sftp/

【讨论】:

【参考方案5】:

SFTP 是它自己的协议。通过 SSH 连接后,通过 SSH 的 FTP 将使用 FTP。

【讨论】:

【参考方案6】: SFTP 代表 SSH 文件传输协议。它不是基于 SSL 的 FTP,也不是基于 SSH 的 FTP。 SFTP 在 RFC 4253 中标准化。 FTP 代表文件传输协议,它由 RFC 959 和后续添加定义。 FTP 非常流行,但并不安全。因此引入了基于 SSL 的 FTP,称为 FTPS 或 FTP/SSL。

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

SFTP(SSH 文件传输协议)可能是在 SSH 协议上运行的安全文件传输协议。它保护 SSH 的执行和身份验证。

这进一步的保护层通过证书保证从属关系是真实的,以便购物者和服务器将形成稳定可靠的连接。这提供了一种廉价的安全性,因为可接受的证书是有序的。

不断建议您在您的网站上有一个证书来告诉客人其有效性并确保连接,但是如果这不切实际,例如,如果您将文件上传到一个全新的网站您目前正在使用的,SFTP 可能是最简单的替代方案 如果你在多年来一直是一个忠实的 FTP 用户的情况下连接使用 SFTP 的服务器,那么与你习惯的速度相比,你会略微惊讶于速度下降。

这可能是因为在整个 SFTP 传输过程中存在大量额外的数据包和密码学下降,这不是礼物,而是滥用 FTP。有些东西会为了速度而牺牲价格,但安全性可能不是其中之一。

我使用此来源作为答案:Difference_Between_FTP_and_SFTP

【讨论】:

【参考方案9】:

我刚刚创建了一个.NET SFTP Library。我在这个过程中学到的一件事是 FTP 与 SFTP 有多么不同。您实际上是在与 SSH 服务器而不是 FTP 服务器进行通信。不仅仅是协议,您发送到 SSH 服务器的命令也完全不同。

这是我图书馆的link。

【讨论】:

以上是关于SFTP 和“通过 SSH 的 FTP”之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

FtpFtps与Sftp之间的区别

SFTP 和FTPS的区别

FTPFTPS和SFTP的简介与区别

FTPFTPS和SFTP的简介与区别

ftps和sftp区别

SFTP 和FTPS的区别