什么是FTP?什么是SFTP?FTP和SFTP的区别是什么

本文介绍了SFTP和FTP两种文件传输协议。SFTP是安全的文件传输协议,通过安全通道(SSH)传输数据,安全性高但效率低。FTP使用TCP/IP协议,安全性不高。文中还阐述了两者在安全通道、使用协议、链接方式等方面的区别,以及各自的传输模式和使用方法。

什么是SFTP?

SFTP是一种安全的文件传输协议,一种通过网络传输文件的安全方法;它确保使用私有和安全的数据流来安全地传输数据。

SFTP要求客户端用户必须由服务器进行身份验证,并且数据传输必须通过安全通道(SSH)进行,即不传输明文密码或文件数据。它允许对远程文件执行各种操作,有点像远程文件系统协议。SFTP允许从暂停传输,目录列表和远程文件删除等操作中恢复。

SFTP和FTP之间的区别

SFTP和FTP非常相似,都支持批量传输(一次传输多个文件),文件夹/目录导航,文件移动,文件夹/目录创建,文件删除等。但还是存在着差异,下面我们来看看SFTP和FTP之间的区别。

1、安全通道

FTP 不提供任何安全通道来在主机之间传输文件;而SFTP协议提供了一个安全通道,用于在网络上的主机之间传输文件。

2、使用的协议

FTP使用TCP / IP协议。而,SFTP是SSH协议的一部分,它是一种远程登录信息。

3、链接方式

FTP使用TCP端口21上的控制连接建立连接。而,SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。

4、安全性

FTP密码和数据以纯文本格式发送,大多数情况下是不加密的,安全性不高。而,SFTP会在发送之前加密数据,二进制的形式传递,是无法“按原样”阅读的,安全性较高。

在实际项目开发中最常使用的文件传输的方式有ftp和sftp两种,但是这两个传输方式各有什么特点呢?本文接下来将讨论SFTP、FTP的区别。

一、FTP协议

FTP是TCP/IP协议组中的协议之一,TP协议由两个部分组成:

FTP服务器(用来存储文件)
FTP客户端(用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源)

默认情况下FTP协议使用TCP端口中的20和21这两个端口。21端口用于传输控制信息,而是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用被动模式则具体使用哪个端口要服务器端和客户端协商决定。FTP传输模式分为以下两种:

主动模式(Port)
被动模式(Passive)

1. 主动模式

1

FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。

2. 被动模式

2

在建立控制通道与主动模式相似,但建立连接后是Pasv命令。FTP服务器收到Pasv命令后便随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,通过三次握手建立通道,然后FTP服务器将通过这个端口进行数据的传送。

注意:很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

二、SFTP协议

SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

三、两者的主要区别

FTP与SFTP两者有什么区别

链接方式:FTP使用TCP端口21上的控制连接建立连接。而,SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。
安全性:SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP是非常安全。
效率:SFTP这种传输方式使用了加密解密技术,所以传输效率比普通的FTP要低得多。

SFTP的概念

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来对远程服务器和本地电脑上文件进行上传,下载操作。

用法:

连接远程服务器:

sftp username@ip

回车之后输入服务器密码即可连接成功。

将文件上传到服务器上:

将服务器上的文件下载到本地:

get [服务器上文件存储的位置] [本地要存储的位置]
SFTP会话SSH连接有以下具体区别: ### 定义用途 - **SSH连接**:SSH(Secure Shell)是一种网络协议,用于在不安全的网络中提供安全的远程登录其他网络服务。它主要用于远程执行命令、管理服务器等操作,为用户提供一个安全的命令行界面来控制远程主机。 - **SFTP会话**:SFTP(SSH File Transfer Protocol)是一种基于SSH协议的文件传输协议,用于在客户端服务器之间安全地传输文件。它允许用户在不同的主机之间进行文件的上传、下载、删除等操作,依赖于SSH连接来提供安全通道[^1][^2]。 ### 工作层面 - **SSH连接**:建立的是一个安全的远程登录会话,用户可以在本地通过命令行操作远程服务器,就像直接在服务器上操作一样。它主要处理用户与服务器之间的命令交互数据传输。 - **SFTP会话**:基于已建立的SSH连接,专注于文件传输文件系统操作。它提供了类似于FTP的文件管理功能,但通过SSH的加密通道进行数据传输,保证了文件传输的安全性[^1][^2]。 ### 端口进程 - **SSH连接**:默认使用TCP端口22,它有自己的守护进程(如sshd)来监听连接请求。当客户端发起SSH连接时,服务器会验证客户端的身份,并建立一个安全的会话。 - **SFTP会话**:本身没有单独的守护进程,它必须使用SSHD守护进程来完成相应的连接操作。通常也使用端口22,依赖于SSH连接来进行身份验证数据加密[^5]。 ### 配置管理 - **SSH连接**:配置主要涉及SSH服务器的参数设置,如允许的认证方式、端口号、最大连接数等。管理方面需要考虑用户的权限分配、安全策略等。 - **SFTP会话**:可以在SSH服务器的配置文件中进行相关配置,例如指定使用内置的SFTP服务器(internal-sftp)还是外部的SFTP服务器程序。不同的配置方式有不同的优缺点,如外部SFTP服务器灵活性较高,但可能引入额外开销;内置SFTP服务器性能更好,配置管理更简单,但灵活性较低[^4]。 ### 代码示例 以下是Python中使用`paramiko`库分别建立SSH连接SFTP会话的示例代码: ```python import paramiko # 建立SSH连接 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='your_host', port=22, username='your_username', password='your_password') # 执行SSH命令 stdin, stdout, stderr = ssh.exec_command('ls -l') print(stdout.read().decode()) # 建立SFTP会话 sftp = ssh.open_sftp() # 上传文件 local_file = 'local_file.txt' remote_file = 'remote_file.txt' sftp.put(local_file, remote_file) # 下载文件 sftp.get(remote_file, local_file) # 关闭SFTP会话 sftp.close() # 关闭SSH连接 ssh.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值