在寻找 C# SSH 文件传输协议 (SFTP) 中的 SFTP 客户端时,我遇到了这两个合适的项目 -一和二。
在尝试了解基础知识时,我遇到了这篇令人困惑的Wikipedia 文章。通过 SSH 的 SFTP 和 FTP 有什么区别?如果不同,似乎没有库支持“通过 SSH 的 FTP”。
这是区别:
您可能找不到“FTP over SSH”的库,因为通常隧道是通过运行 SSH 命令设置的,一旦设置好,客户端和服务器就不需要知道隧道;他们只是打开端口并以没有隧道的方式传输数据。
顺便说一句,您的另一个选择可能是FTP over SSL (FTPS),它受 .NET 支持。(参见http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx。)
基本上,有以下文件传输协议:
FTP – 自 1970 年代以来一直存在的普通旧 FTP 协议。首字母缩写词代表“文件传输协议”。它通常在 TCP 端口 21 上运行。
SFTP – 另一种完全不同的文件传输协议,与 FTP 无关。SFTP 通过 SSH 会话运行,通常在 TCP 端口 22 上运行。它自 1990 年代后期就已存在。该首字母缩写词实际上代表“SSH 文件传输协议”。
SSH 上的 FTP - 1) 可能,但通过 SSH 通道隧道传输的 FTP 协议的例子极为罕见 2) 错误命名的 SFTP
(有关详细信息,请参阅 Rebex 的“安全FTP、FTP/SSL、SFTP、FTPS、FTP、SCP...有什么区别? ”页面)
免责声明:我为 Rebex 工作
SFTP 实际上是另一种通过 SSH 运行的协议 - 如果您愿意,它是 SSH 的扩展。人们倾向于使用 SFTP,而不是通过 SSH 隧道传输 FTP。
要在 .NET 中获得全面的 SFTP 支持,请尝试edtFTPnet/PRO。支持许多不同的 SFTP 服务器已经存在很长时间了。
这里有一个简单的解释:
https://www.webstix.com/knowledgebase/general/how-to-connect-using-sftp/
SFTP 是它自己的协议。通过 SSH 连接后,通过 SSH 的 FTP 将使用 FTP。
对于身份验证,SFTP 使用 SSH 密钥,而 FTPS 使用 X.509 证书。
SSH 上的 FTP 是通过 SSH 建立隧道的普通 FTP 协议。SFTP 是 SSH 提供的文件传输机制,它是一个完全不同的协议。我还没有看到有人通过 SSH 使用 FTP。
SFTP(SSH 文件传输协议)可能是在 SSH 协议上运行的安全文件传输协议。它保护 SSH 的执行和身份验证。
这进一步的保护层通过证书保证从属关系是真实的,以便购物者和服务器将形成稳定可靠的连接。这提供了一种廉价的安全性,因为可接受的证书是有序的。
它不断建议您在您的网站上有一个证书来告诉客人其有效性并确保连接,但是如果这不切实际,例如,如果您将文件上传到您刚刚的全新网站目前正在运行,SFTP 可能是最简单的替代方案 如果您在多年一直是忠实的 FTP 用户的情况下连接使用 SFTP 的服务器,那么与您现在相比,速度下降会稍微令人震惊习惯了。
这可能是因为在整个 SFTP 传输过程中存在大量额外的数据包和密码学下降,这不是礼物,而是滥用 FTP。有些东西会为了速度而牺牲价格,但安全性可能不是其中之一。
我使用此来源作为答案:Difference_Between_FTP_and_SFTP
我刚刚创建了一个.NET SFTP 库。我在这个过程中学到的一件事是 FTP 与 SFTP 有多么不同。您实际上是在与 SSH 服务器而不是 FTP 服务器进行通信。不仅仅是协议,您发送到 SSH 服务器的命令也完全不同。
这是我的图书馆的链接。