SFTP, FTPS區別
2. FTPS: FTP over SSL
3. FTP over SSH
<from wikipedia>
FTP over SSH (not SFTP) refers to the practice of tunneling a normal FTP session over an SSHconnection.
Because FTP uses multiple TCP connections (unusual for a TCP/IP protocol that is still in use), it is particularly difficult to tunnel over SSH. With many SSH clients, attempting to set up a tunnel for the control channel (the initial client-to-server connection on port 21) will protect only that channel; when data is transferred, the FTP software at either end will set up new TCP connections (data channels), which bypass the SSH connection, and thus have no confidentiality, integrity protection, etc.
FTPS vs. SFTP: What to Choose
原文:www.codeguru.com/csharp/.net/net_general/internet/article.php/c14329File transfer over the network using FTP protocol (defined by RFC 959 and later additions) has its roots in 1980, when the first RFC for FTP protocol was published. FTP provides functions to upload, download, and delete files; create and delete directories; and read directory contents. Although FTP is very popular, it has certain disadvantages that make it harder to use. The major drawbacks are lack of the uniform format for directory listing (this problem has been partially solved by introducing the MLST command, but it's not supported by some servers) and the presence of the secondary connection (DATA connection). Security in FTP is provided by employing SSL/TLS protocol for channel encryption as defined in RFC 2228. The secured version of FTP is called FTPS.
In UNIX systems, another security standard has grown. It was the SSH family of protocols. The primary function of SSH was to secure remote shell access to UNIX systems. Later, SSH was extended with file transfer protocol—first SCP (in SSH 1.x), and then SFTP (in SSH2). Version 1 of the SSH protocol is outdated, unsecure, and generally not recommended for use. Consequently, SCP is not used anymore and SFTP gains popularity day by day.
The "SFTP" abbreviation is often mistakenly used to specify some kind of Secure FTP, by which people most often mean FTPS. Another (similar) mistake is that SFTP is thought to be some kind of FTP over SSL. In fact, SFTP is an abbreviation of "SSH File Transfer Protocol." This is not FTP over SSL and not FTP over SSH (which is also technically possible, but very rare).
SFTP is a binary protocol, the latest version of which is standardized in RFC 4253. All commands (requests) are packed to binary messages and sent to the server, which replies with binary reply packets. In later versions, SFTP has been extended to provide not just file upload/download operations, but also some file-system operations, such as file lock, symbolic link, creation, and so forth.
Both FTPS and SFTP use a combination of an asymmetric algorithm (RSA, DSA), a symmetric algorithm (DES/3DES, AES, Twhofish and so on), and a key-exchange algorithm. For authentication, FTPS (or, to be more precise, SSL/TLS protocol under FTP) uses X.509 certificates, whereas SFTP (SSH protocol) uses SSH keys.
X.509 certificates include the public key and certain information about the certificate owner. This information lets the other side verify the integrity of the certificate itself and authenticity of the certificate owner. Verification can be done both by computer and to some extent by the human. An X.509 certificate has an associated private key that is usually stored separately from the certificate for security reasons.
A SSH key contains only a public key (the associated private key is stored separately). It doesn't contain any information about the owner of the key. Neither does it contain information that lets one reliably validate the integrity and authenticity. Some SSH software implementations use X.509 certificates for authentication, but in fact they don't validate the whole certificate chain—only the public key is used (which makes such authentication incomplete and similar to SSH key authentication).
Here's the brief list of pros and cons of the two protocols:
FTPS
Pros:
- Widely known and used
- The communication can be read and understood by humans
- Provides services for server-to-server file transfer
- SSL/TLS has good authentication mechanisms (X.509 certificate features)
- FTP and SSL/TLS support is built into many Internet communication frameworks
Cons:
- Doesn't have a uniform directory listing format
- Requires a secondary DATA channel, which makes it hard to use behind the firewalls
- Doesn't define a standard for file name character sets (encodings)
- Not all FTP servers support SSL/TLS
- Doesn't have a standard way to get and change file and directory attributes
SFTP
Pros:
- Has good standards background that strictly defines most (if not all) aspects of operations
- Has only one connection (no need for DATA connection)
- The connection is always secured
- The directory listing is uniform and machine-readable
- The protocol includes operations for permission and attribute manipulation, file locking, and more functionality
Cons:
- The communication is binary and can't be logged "as is" for human reading
- SSH keys are harder to manage and validate
- The standards define certain things as optional or recommended, which leads to certain compatibility problems between different software titles from different vendors
- No server-to-server copy and recursive directory removal operations
- No built-in SSH/SFTP support in VCL and .NET frameworks
What to Choose
As usual, the answer depends on what your goals and requirements are. In general, SFTP is technologically superior to FTPS. Of course, it's a good idea to implement support for both protocols, but they are different in concepts, in supported commands, and in many other things.
It's a good idea to use FTPS when you have a server that needs to be accessed from personal devices (smartphones, PDAs, and the like) or from some specific operating systems that have FTP support but don't have SSH/SFTP clients. If you are building a custom security solution, SFTP is probably the better option.
As for the client side, the requirements are defined by the server(s) that you plan to connect to. When connecting to Internet servers, SFTP is more popular because it's supported by Linux and UNIX servers by default.
For private host-to-host transfer, you can use both SFTP and FTPS. For FTPS, you would need to search for a free FTPS client and server software or purchase a license for commercial one. For SFTP support, you can install an OpenSSH package that provides free client and server software.
Developer Tools
If you are a software developer and need to implement file transfer capability in your application, you will be searching for the components to do the job.
In .NET, you have built-in support for FTPS in the .NET Framework (see the FtpWebRequest class). However, functionality of this class is severely limited, especially in the SSL/TLS control aspect. The .NET Framework doesn't include any support for SSH or SFTP.
In VCL, you have a selection of free components and libraries that provide FTP functionality. When you add OpenSSL to them, you can get FTPS for free. If you don't want to deal with OpenSSL DLLs, you can use one of the commercially available libraries for SSL and FTPS support. Again, there are no freeware SFTP components available for .NET.
If you use a tool with which you have to use ActiveX controls, you need to search for commercial FTPS or SFTP controls. No free controls are available. SecureBlackbox library provides both FTPS and SFTP support for .NET, VCL and ActiveX technologies.
----------------------------------------------------------------------------------------------------------------------------
http://hi.baidu.com/faicker/blog/item/7dac626556fc23fdf6365467.html
相關文章
- 淺談SFTP和FTP的區別FTP
- FTP-FTPS-SFTP,為什麼企業還在尋求FTP替代方案?FTP
- 【Linux基礎】ftp、sftp和scp是什麼?區別在哪裡?LinuxFTP
- Centos8中使用VSFTPD配置FTPsCentOSFTP
- 使用SSH+SFTP操作終端全解析,告別XShellFTP
- linux配置sftpLinuxFTP
- idea 配置sftpIdeaFTP
- CentOS上搭建SFTPCentOSFTP
- sftp 上傳類FTP
- SFTP服務搭建FTP
- sftp 傳輸檔案FTP
- Sftp部署及最佳化FTP
- SFTP是什麼協議FTP協議
- 使用 SSH 和 SFTP 協議FTP協議
- linux如何搭建sftp伺服器LinuxFTP伺服器
- centos7配置sftp資訊CentOSFTP
- sftp常用命令介紹FTP
- 和區別
- #include <> ““區別
- CentOS7系統搭建SFTP教程。CentOSFTP
- Java SFTP 上傳、下載等操作JavaFTP
- MacOS下shh,sftp,scp簡單使用MacFTP
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- __weak與__block區別,深層理解兩者區別BloC
- ||和??的區別
- django版本區別Django
- /*和/**的區別
- MyISAM InnoDB 區別
- save() create()區別
- 蜂蜜的區別
- ??與?:的區別
- simulink模式區別模式
- 值型別與引用型別的區別型別
- js基本型別和引用型別區別JS型別
- UIModalPresentationStyle 各種型別的區別UI型別
- vscode 連線遠端伺服器 sftpVSCode伺服器FTP
- xshell 使用 sftp上傳下載檔案FTP
- 用Python操作SFTP的簡易程式碼PythonFTP