Differences between SFTP and “FTP over SSH”

2019-01-10 12:12发布

While looking for an SFTP client in C# SSH File Transfer Protocol (SFTP), I've come across these two suitable projects - one and two.

While trying to understand the basics, I came across this confusing Wikipedia article. What is difference between SFTP and FTP over SSH? No library seems to give support for "FTP over SSH", if it is different.

标签: c# ftp ssh sftp
8条回答
混吃等死
2楼-- · 2019-01-10 12:52

Here is the difference:

  • SFTP (SSH file transfer protocol) is a protocol that provides file transfer and manipulation capabilities. It can work over any reliable data stream, but is typically used with SSH
  • "FTP over SSH" uses the regular old FTP protocol, but an SSH tunnel is placed between client and server.

You probably won't find libraries for "FTP over SSH" because typically the tunnel is set up by running an SSH command, and once it is set up, clients and servers don't need to know about the tunnel; they just open ports and transfer data they way they would without a tunnel.

BTW, yet another option for you might be FTP over SSL (FTPS), which is supported by .NET. (See http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx.)

查看更多
Evening l夕情丶
3楼-- · 2019-01-10 12:52

I've used SharpSSH for years and it works great. Though it hasn't seen any development in awhile, the source code is easy to understand and work with. I've made tweaks and re-compiled it for my own projects with no trouble, though it works just fine as-is without the need for any of that.

If you don't need to do anything fancy, you could also write your own .NET wrapper for PuTTY's PSFTP.EXE client with very minimal code.

Though I've never used Greg Finzer's SFTP library, I know him personally and strongly believe that he has a quality product if you need something actively developed and robust. But for the simple stuff, I've had great success with the free options I mentioned.

查看更多
smile是对你的礼貌
4楼-- · 2019-01-10 12:53
  • SFTP stands for SSH File Transfer Protocol. It's not FTP over SSL and not FTP over SSH. SFTP is standardized in RFC 4253.
  • FTP stands for File Transfer Protocol which is defined by RFC 959 and latter additions. FTP is very popular but not secured. Therefore FTP over SSL was introduced and it's called FTPS or FTP/SSL.

For authentication SFTP use SSH keys, while FTPS use X.509 certificates.

查看更多
干净又极端
5楼-- · 2019-01-10 12:56

Basically, there are the following file transfer protocols around:

  • FTP – the plain old FTP protocol that has been around since 1970s. The acronym stands for "File Transfer Protocol". It usually runs over TCP port 21.

  • SFTP – another, completely different file transfer protocol that has nothing to do with FTP. SFTP runs over an SSH session, usually on TCP port 22. It has been around since late 1990s. The acronym actually stands for "SSH File Transfer Protocol".

  • FTP over SSH - 1) possible, but extremely rare example of FTP protocol tunneled through a SSH channel 2) incorrectly named SFTP

(for details see "Secure FTP, FTP/SSL, SFTP, FTPS, FTP, SCP... What's the difference?" page at Rebex)

Disclaimer: I work for Rebex

查看更多
Root(大扎)
6楼-- · 2019-01-10 12:59

SFTP is actually another protocol that runs over SSH - an extension of SSH if you like. People tend to use SFTP rather than tunnelling FTP over SSH.

For comprehensive SFTP support in .NET try edtFTPnet/PRO. It's been around a long time with support for many different SFTP servers.

查看更多
姐就是有狂的资本
7楼-- · 2019-01-10 12:59

SFTP is it's own protocol. FTP over SSH is using FTP once you're connected via SSH.

查看更多
登录 后发表回答