在C#SSH文件传输协议(SFTP)中寻找SFTP客户端时,我遇到了这两个合适的项目 - one和two。
在尝试理解基础知识时,我遇到了令人困惑的Wikipedia article。 SFTP和FTP通过SSH有什么区别?没有库似乎支持“FTP over SSH”,如果不同的话。
答案 0 :(得分:52)
区别在于:
您可能找不到“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密钥,而FTPS使用X.509证书。
答案 6 :(得分:1)
这是一个简单的解释:
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。