FTPS (FTP over SSL) vs. SFTP (SSH 文件传输协议): 我们如何做出选择

第一个RFC的FTP协议发布通过网络使用FTP协议(由RFC 959或更高版本)的文件传输始于1980年,FTP提供上传,下载和删除文件,创建和删除目录,读取目录内容的功能。虽然FTP是非常受欢迎的,它有一些缺点,使其更难使用。主要的缺点是缺乏目录列表的统一格式(这个问题已经通过引入MLST命令部分解决,但是一些服务器不支持)和辅助连接(DATA连接)的存在。FTP中的安全性通过对RFC 2228中定义的信道加密采用SSL / TLS协议来提供。FTP的安全版本称为FTPS。

在UNIX系统中,另一种安全标准有所提升。它是SSH协议家族的一员,SSH的主要功能是保护远程shell访问UNIX系统。后来SSH扩展了文件传输协议 - 第一个是SCP(SSH 1.x),然后是SFTP(SSH2)。版本1中的SSH协议已经过时了,而且不安全,我们一般不推荐使用。 因此,SCP不再被使用,然后SFTP却日益流行。

“SFTP”缩写经常被误解是FTP某种安全的类型,人们通常认为是FTPS。另一个(类似的)误解是SFTP被认为是某种基于SSL的FTP。 而实际上SFTP是“SSH文件传输协议”的缩写。这不是基于SSL的FTP,而是基于SSH的FTP(这在技术上也是可能的,但是非常少见)。

SFTP是一种二进制协议,其最新版本在RFC 4253中被标准化。所有命令(请求)被打包为二进制消息,并发送到服务器,服务器使用二进制回复包进行回复。在之后的版本中,SFTP被扩展为不仅仅提供文件上传/下载操作,还提供一些文件系统操作,例如文件锁定,符号链接创建等。

FTPS和SFTP都使用非对称算法(RSA,DSA),对称算法(DES / 3DES,AES,Twhofish等)和密钥交换算法的组合。对于验证FTPS(或更准确地说,FTP下的SSL / TLS协议)使用X.509证书,而SFTP(SSH协议)使用SSH密钥。

X.509证书包括公钥和有关证书所有者的某些信息。此信息允许另一方验证证书本身的完整性和证书所有者的真实性。验证可以通过计算机和在一定程度上由人来完成。 X.509证书具有关联的私钥,出于安全原因,通常与证书分开存储。

SSH密钥只包含公钥(相关的私钥是单独存储的)。它不包含有关密钥所有者的任何信息。 同样也不包含允许可靠地验证完整性和真实性的信息。 一些SSH软件实现使用X.509证书进行身份验证,但实际上它们不验证整个证书链 - 只使用公钥(这使得此类身份验证不完整,类似于SSH密钥身份验证)。

以下是两个协议的优缺点的简要列表:

FTPS

优点:

  • 广为人知并使用
  • 通信可以由人阅读和理解
  • 提供了服务器到服务器文件传输的服务
  • SSL / TLS具有良好的身份验证机制(X.509证书功能)
  • 在许多互联网通信框架中都支持内置FTP与SSL / TLS。

 缺点:

  • 没有统一的目录列表格式
  • 需要辅助数据通道,这使其难以在防火墙后使用
  • 没有为文件名定义标准字符集(编码)
  • 并非所有FTP服务器都支持SSL / TLS
  • 没有标准的方式来获取和更改文件和目录属性

     SFTP

     优点:

  • 有良好的标准背景,在操作方面具有严格的定义
  • 只有一个连接(不需要DATA连接)
  • 连接始终保持安全
  • 统一的目录列表格式
  • 协议包括用于权限和属性操作,文件锁定和更多功能的操作

     缺点:

  • 通信是二进制的,可读性差
  • SSH密钥更难以管理和验证
  • 标准将某些事物定义为可选或推荐的,这导致某些兼容性问题
  • 没有服务器到服务器副本以及递归目录删除操作
  • 在VCL和.NET框架中不支持内置的SSH / SFTP

如何做出选择

通常,答案取决于您的目标和要求。 一般来说,SFTP在技术上优于FTPS。 当然,实现对两个协议的支持是一个好主意,但是它们在概念,支持的命令和许多其他方面是不同的。

当您具有需要从个人设备(智能手机,PDA等)访问的服务器或具有FTP支持但没有SSH / SFTP客户端的某些特定操作系统时,最好使用FTPS。 如果您正在构建自定义安全解决方案,SFTP可能是更好的选择。

对于客户端,需求由您计划连接的服务器定义。 当连接到Internet服务器时,SFTP更受欢迎,因为它默认由Linux和UNIX服务器支持。

对于私有主机到主机传输,您可以使用SFTP和FTPS。 对于FTPS,您需要搜索一个免费的FTPS客户端和服务器软件或购买商业许可证。 对于SFTP支持,您可以安装OpenSSH软件包,它提供免费的客户端和服务器软件。 对于商业用途,我们建议使用Bitvise SSH服务器。

    开发工具

如果您是软件开发人员,并且需要在应用程序中实现文件传输功能,则您将搜索组件以执行该作业。

.NET中,对.NET Framework中的FTPS有内置支持(请参阅FtpWebRequest类)。 但是这个类的功能受到严格限制,特别是在SSL / TLS控制方面。
.NET Framework不包括对SSH或SFTP的任何支持。

VCL中,您可以选择提供FTP功能的免费组件和库。 当您向他们添加OpenSSL时,您可以免费获取FTPS。 如果您不想处理OpenSSL DLL,您可以使用一个商业上可用的库来支持SSL和FTPS。 再次提醒,没有免费的SFTP组件可用于.NET。

 Java中,FTPS和SFTP客户端存在几个不受支持和错误。

对于所有提到的平台和技术,欢迎您下载SFTP或FTPS组件(都是SecureBlackbox套件的一部分),并自行测试:

  1. .NET时,Windows RT,Silverlight,.NET CF,Windows Phone,Android应用程序 - 点击这里
  2. Java或Android应用程序 - 点击这里
  3. Delphi,C ++ Builder,Free Pascal(Windows,Mac OS,Linux)应用程序 - 点击这里
  4. C ++(Linux,MacOS,iOS)应用程序 - 点击这里
时间: 2024-10-06 00:30:26

FTPS (FTP over SSL) vs. SFTP (SSH 文件传输协议): 我们如何做出选择的相关文章

FTP文件传输协议之vsftpd服务

一.FTP服务概述 FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件.客户端软件共同实现文件传输功能 FTP服务器默认使用TCP协议的20.21端口与客户端实现通信.20端口用于建立数据连接,并传输数据文件:21端口用于建立控制连接,并传输FTP控制命令.FTP数据连接分为主动模式和被动模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接 vsftpd软件 vsftpd是目前在Linux/Unix领域应用十分

文件传输协议之FTP

FTP FTP叫做FILE Transfer Protocol,文件传输协议,是比较古老的传输协议之一,它是以明文的方式来进行工作的,因此,它不够安全,后续我们主要介绍安全的ftp叫做vsftp.一般的ftp服务器能够支持三种用户的访问: 本地用户 匿名用户 虚拟用户 当然,不同的用户的权限也不一样.对于本地用户和匿名用户的设置只需要修改ftp的配置文件即可.这个将在后文介绍:而对于虚拟用户需要借助mysql数据库来完成账号和密码的认证,这个过程在下一遍文章来介绍. ftp的工作原理: ftp是

RDP/SSH/VNC三种文件传输协议有什么区别?

客户端和终端主机之间的文件交互我们称之为文件传输.在主机运维过程中,我们常常需要进行文件传输,以确保网站能够正常运行.不同系统的服务器使用的文件传输协议不同,文件传输的方式也不尽相同.那么文件传输协议都有哪些?目前市面上主流的文件传输工具有哪些?RDP文件传输协议:RDP远程协议是一个多通道协议,让用户通过本地电脑连接远程服务器.大部分的Windows.Linux服务器都有相应的客户端. 行云管家基于B/S架构(Browser/Server,浏览器/服务器模式)设计,直接使用浏览器远程连接服务器

【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识

第35章      FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) 35.1  初学者重要提示 35.2  FTP基础知识参考资料 35.3  FTP基础知识点 35.4  总结 35.1  初学者重要提示 FTP文件传输协议在实际项目中有比较重要的实用价值,需要初学者对FTP的基础知识也有个认识. 35.2  FTP基础知识参考资料 大家可以从以下地址获得FTP

Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )

https://blog.csdn.net/buster_zr/article/details/80244542 FTP FTP 是 File Transfer Protocol (文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(

支持断点续传的大文件传输协议

文件传输协议(FTP)是一个被广泛应用的网络协议,FTP技术作为文件传输的重要手段,在数据通信领域一直发挥着举足轻重的作用,不支持断点续传,是Internet上最早也是最广泛使用的应用之一. 从1971年A.K.Bhushan提出第一个FTP协议版本(RFC114)到现在,人们对FTP的应用已经历了40余年的时间,同时,许多基于FTP协议的数据传输软件也应运而生.如Windows操作系统下经常使用的支持FTP协议的软件有:CuteFTP.FlashFXP.迅雷(Thunder).快车(Flash

文件传输协议FTP、SFTP和SCP

网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transfer Protocol) SFTP(SSH File Transfer Protocol,和FTP不一样) SCP(Secure copy,based on SSH) SSH (Secure Shell) 通信层: TCP(Transmission Control Protocol 三次握手传输协议

FTP 文件传输协议

FTP 文件传输协议 什么是FTP? FTP全称是文件传输协议,简单点就是通过这个协议我们可以实现文件的传输. FTP软件一般分为服务端和客服端. 常用的FTP软件 pureFTP 编译安装FTP 进入官网下载 https://www.pureftpd.org/ 具体下载地址:?[https://download.pureftpd.org/pub/pure-ftpd/releases/](https://download.pureftpd.org/pub/pure-ftpd/releases/)

Raysync文件传输协议(FTP)

文件传输协议(FTP)在RFC 959中定义,于1985年10月发布.文件传输协议(FTP)被设计成为一个跨平台的.简单且易于实现的协议.文件传输协议(FTP)有一个漫长的演化史,是互联网上最重要的应用之一,但时至今日,却已江河日下.本文作者从各方面列举了一些文件传输协议(FTP)为人诟病的缺点. 1.数据传输模式不合理 不考虑文件自身的内容,一味使用ASCII模式传输数据是不合理的.文件传输协议(FTP)应该具有自动检测功能,当然用户也可以进行自定义. 虽然现在许多Linux和Windows客