ftp和sftp的区别

这两种协议都是用于传输文件的,其中sftp是基于ssh的原理开发的

ftp: File Transfer Protocol
stfp: Secure File Transfer Protocol / SSH File Transfer Protocol
ssh: Secure Shell

ftp


ftp是明文传输,有两种模式:主动模式和被动模式

主动模式(Positive Mode):

Gh2qT6.png
Gh2s7A.png
在该模式下,服务端开放21,20端口;21端口用于接收用户名和密码,20端口用于传输数据
客户端登录ftp服务器后随机开放一个端口,再将这个端口的信息发送给服务端,服务端再通过用于传输数据的20端口连接至用户提供的端口

被动模式(Passive Mode):

Gh2mnz.png
Gh2JPR.png
在该模式下,服务端开放用于客户端连接的21端口以及一个随机端口,而客户端在登录ftp服务器后接收服务端提供的随机端口的信息,再连接至服务端的该端口以传输数据

stfp

Gh2eqP.jpg

首先要明确的一点是,stfp是ssh的一个子服务

Gh24C5.png
sftp是基于ssh的技术进行文件的传输的,而ssh是通过22端口进行通信的,也就是说sftp也是通过22端口进行通信以及数据传输的,与ftp协议相比,除了通信端口的不同,由于ssh的通信过程是加密的,所以sftp中文件的传输也是加密的,但实际的安全性还取决于ssh的连接方式;且在ssh服务器与通信主机(服务器)分开时还分有半安全模式(Less Secure Connection)和安全模式(Full Secure Connection)

半安全模式指用户通过ssh连接ssh服务器时所有的数据都是加密的,而ssh服务器与主机间通信的数据是未加密的

Gh2xUn.png

安全模式指用户与ssh服务器以及ssh服务器与主机间的通信都是加密的

Gh2At0.png
而当ssh服务运行于目标主机上时便不存在半安全模式和安全模式之分了

ssh

作为远程连接主机的常用方式,ssh有两种连接方式,一种是通过用户名和密码进行通信,这种方式非常方便,只需要任意一台能够接入互联网的常用设备就能够连接上远程主机,但是这种方式存在受到中间人攻击的可能;另一种方式是通过密钥分发的方式,即在服务端生成一份私钥存于服务器,再生成一份公钥分发给需要通信的主机,这种方式不需要用户名和密码,并且通信时需要进行密钥与公钥的验证,基本杜绝了中间人攻击的可能,但是由于需要提前准备好公钥,故便携性不如第一种方式

quote
https://network.51cto.com/article/603552.html
https://www.zhihu.com/question/20402010
https://blog.csdn.net/cuker919/article/details/6403925

评论