SFTP与“SSH over SSH”之间的差异

时间:2009-01-13 19:37:24

标签: c# ftp ssh sftp

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

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

9 个答案:

答案 0 :(得分:52)

区别在于:

  • 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。)

答案 1 :(得分:37)

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

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

  • SFTP - 另一种完全不同的文件传输协议,与FTP无关。 SFTP通过SSH会话运行,通常在TCP端口22上运行。它自20世纪90年代末开始出现。首字母缩略词实际上代表“SSH文件传输协议”。

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

(有关详情,请参阅Secure FTP, FTP/SSL, SFTP, FTPS, FTP, SCP... What's the difference?上的“Rebex”页面)

免责声明:我为Rebex工作

答案 2 :(得分:4)

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

要获得.NET中全面的SFTP支持,请尝试edtFTPnet/PRO。很长一段时间以来,它支持许多不同的SFTP服务器。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

SFTP是它自己的协议。一旦通过SSH连接,FTP over SSH就会使用FTP。

答案 5 :(得分:1)

  • SFTP代表SSH文件传输协议。它不是基于SSL的FTP而不是基于SSH的FTP。 SFTP在RFC 4253中标准化。
  • FTP代表文件传输协议,它由RFC 959和后面的添加项定义。 FTP很受欢迎但不安全。因此引入了FTP over SSL,它被称为FTPS或FTP / SSL。

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

答案 6 :(得分:1)

这是一个简单的解释:

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

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

答案 7 :(得分:0)

我使用SharpSSH多年,效果很好。虽然它在一段时间内没有看到任何发展,但源代码易于理解和使用。我已经做了调整并为我自己的项目重新编译它没有任何问题,虽然它可以正常工作而不需要任何其他。

如果您不需要做任何花哨的事情,您也可以使用非常少的代码为PuTTY的PSFTP.EXE客户端编写自己的.NET包装器。

虽然我从未使用过Greg Finzer的SFTP库,但我个人非常了解他并坚信如果你需要积极开发和强大的东西,他就会拥有优质的产品。但是对于简单的东西,我在我提到的免费选项上取得了很大的成功。

答案 8 :(得分:-4)

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

这是我的图书馆的link