目录:
FTP是在网络层传输文件的应用层协议,基于TCP连接,使用客户/服务器模式。
对于ftp服务器来说,常用的端口有两个,一个是tcp端口21,此端口经常用于连接,另一个是tcp端口号20, 此端口经常用于传输数据。
客户端与服务器的 21端口建立连接,用来发送命令,客户端获取数据时通过端口21发送PORT命令。PORT命令包含了客户端接收数据的端口号。传送数据时,服务器端通过TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
建立控制通道和Port模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)
FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
下载: get readme.txt # 下载 readme.txt 文件
上传: put readme.txt # 上传文件
TFTP是TCP/IP协议族中在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
(1)TFTP能够用于那些有UDP而无TCP的环境;
(2)TFTP代码所占的内存要比FTP小。
(1)TFTP协议不需要验证客户端的权限,FTP需要进行客户端验证;
(2)TFTP协议一般多用于局域网以及远程UNIX计算机中,而常见的FTP协议则多用于互联网中;
(3)FTP客户与服务器间的通信使用TCP,而TFTP客户与服务器间的通信使用的是UDP;
(4)TFTP只支持文件传输。也就是说,TFTP不支持交互,而且没有一个庞大的命令集。最为重要的是,TFTP不允许用户列出目录内容或者与服务器协商来决定哪些是可得到的文件。
-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后 重命名的文件名。
-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文 件名,或上传Server后重命名后的文件名。
-g 是get的缩写,下载文件时用,
-p 是put的缩写,上传文件时用,
下载东西: tftp -g -r 1.txt -l 2.txt 192.168.1.1
上传东西:tftp -p -r 3.txt -l 2.txt 192.168.1.1
SFTP(SSH 文件传输协议SSH File transfer protocol)也称为通过安全套接层的文件传输协议File Transfer protocol via Secure Socket Layer, 以及 FTPS(FTP-SSL) 都是最常见的安全 FTP 通信技术,用于通过 TCP 协议将计算机文件从一个主机传输到另一个主机。SFTP 和 FTPS 都提供高级别文件传输安全保护,通过强大的算法(如 AES 和 Triple DES)来加密传输的数据。
当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。一个选择是创建一个支持SSL的FTP服务器,它能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。
A.导读
FTPS也称作“FTP-SSL”和“FTP-over-SSL”,是一种多传输协议,相当于加密版的FTP。默认端口号是21。
FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
FTPS最常见的问题之一是建立数据传输连接。在FTPS中,数据通过单独的通道(不同于发起命令的主通道,DATA)传输。 这意味着每次列出目录或上传/下载文件时都会建立新连接。
该协议允许从服务器到客户端或者从客户端到服务器进行数据连接。因此,必须为此准备好两个环境中的一个,包括定义用于数据连接的端口范围。 端口范围必须是可公开访问的,这使得网络防火墙配置更具挑战性。
在windows中可以使用FileZilla等传输软件来连接FTPS进行上传,下载文件,建立,删除目录等操作,在FileZilla连接时,有显式和隐式TLS/SSL连接之分,连接时也有指纹提示。SFTP类似。
B.两种连接方法
SSL安全扩展至少有两种不同的初始化方法:显式安全和隐式安全。
显示安全:为了建立SSL连接,显式安全要求FTP客户端在和FTP服务器建立连接后发送一个特定的命令给FTP服务器。客户端使用服务器的缺省端口。
隐式安全: 当FTP客户端连接到FTP服务器时,隐式安全将会自动和SSL连接一起开始运行。在隐式安全中服务器定义了一个特定的端口(TCP端口990)让客户端来和其建立安全连接。
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSL/TLS协议在传输层(TCP/IP)之上、但是在应用层之下工作的。因此,它可以很容易在诸如HTTP,Telnet,POP3,IMAP4,SMTP和FTP等应用层协议上实现。
C.安全手段
FTPS包含两个关键的安全元素:客户端/服务器认证,它验证事务中涉及的发送方和接收方的身份以及消息加密以保护传输中的消息。
身份验证:服务器使用安全通道上的用户 ID、密码和 SSL 证书进行身份验证。一旦建立 FTPS 连接,FTP 客户端软件将检查目标 FTP 服务器证书是否可信的。如果证书由已知的证书颁发机构(CA)签发,或者证书由您的合作伙伴自己签发,并且您的信任密钥存储区中有其公开证书的副本,则 SSL 证书将被视为受信任的证书。
安全加密:会话密钥保护传输中的数据; 消息使用特定会话的密钥(TLS握手)进行加密。 一旦建立,客户端和服务器之间交换的所有消息都将被加密。
通信可以被人们读取和理解
提供服务器到服务器文件传输的服务
SSL/TLS 具有良好的身份验证机制(X.509 证书功能)
FTP 和 SSL 支持内置于许多互联网通信框架中
需要辅助数据通道(DATA),这使得难以通过防火墙使用
没有统一的目录列表格式
没有定义文件名字符集(编码)的标准
并非所有 FTP 服务器都支持 SSL/TLS
没有获取和更改文件或目录属性的标准方式
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
SFTP 或 SSH 文件传输协议是另一种安全的安全文件传输协议,设计为 SSH 扩展以提供文件传输功能,因此它通常仅使用 SSH 端口用于数据传输和控制。当 FTP 客户端软件连接到 SFTP 服务器时,它会将公钥传输到服务器进行认证。如果密钥匹配,提供任何用户/密码,身份验证就会成功。
只有一个连接(不需要 DATA 连接)。
FTP 连接始终保持安全
FTP 目录列表是一致的和机器可读的
FTP 协议包括操作权限和属性操作,文件锁定和更多的功能。
通信是二进制的,不能“按原样”记录下来用于人类阅读,
SSH 密钥更难以管理和验证。
这些标准定义了某些可选或推荐的选项,这会导致不同供应商的不同软件之间存在某些兼容性问题。
没有服务器到服务器的复制和递归目录删除操作
在 VCL 和 .NET 框架中没有内置的 SSH/SFTP 支持。
FTPS和SFTP都提供强大的保护和身份验证。 但与FTPS相比,SFTP提供了一些明显的优势。
1)FTPS需要多连接/端口
FTPS使用多个端口号。 命令通道的第一个端口用于身份验证和传递命令。 但是,无论何时发出文件传输请求或目录列表请求,都必须为数据通道打开另一个端口号。 您和您的贸易合作伙伴必须在防火墙中打开多个端口以进行FTPS连接,这可能会带来安全风险。
相反,SFTP只使用一个连接,这意味着您的服务器上只需打开一个端口,并且服务器只允许在指定端口上公开访问,这样更安全一些。
2)SFTP安全性一致
SFTP要求所有客户端和服务器的通信都是安全的,但FTPS可以在不安全的FTP连接和FTPS安全连接之间来回切换。 因此,SFTP通过标准化所有文件传输,使得IT管理员更轻松的在组织内实行安全最佳实践。
3)SFTP应用更广泛
SFTP具有比FTPS更广泛的跨平台支持。 SSH和SFTP在Unix/Linux平台上无处不在,使得SFTP成为大多数数据传输项目的更好选择。
Cerberus FTP 服务器
FileZilla - 最著名的免费 FTP 和 FTPS 服务器软件
Serv-U FTP 服务器
参考博客:
https://blog.csdn.net/shmilychan/article/details/51848850
https://zhuanlan.zhihu.com/p/73999035