一、ftp

  ftp是文件传输协议,ftp协议包括两部分,一个是ftp客户端,另一个是ftp服务器。

  原理:一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口。FTP使用两个TCP连接,21号端口负责控制连接,20号端口负责数据连接,这样才不会混乱,是FTP可以更好的为我们服务。FTP协议的工作方式可以分为主动方式和被动方式两种,主动是指FTP客户端发送PORT命令连接FTP服务器,被动是FTP客户端发送PASV命令连接FTP服务器。主动方式:在通过21号端口连接好控制通道后,客户端发送给服务器PORT命令,就是给服务器说咱们俩通信你可以在那个端口进行,于是服务器打开20号端口,连接上客户端的指定的端口进行连接,传送数据。需要创建一个新的连接。被动方式:在通过21号端口连接好控制通道后,客户端发送给服务器PASV命令,就是给服务器说咱们俩通信的端口号你选择,然后服务器随机选择一个端口(大于1024),FTP客户端连接至此端口,进行通信。不需要创建一个新的连接。

  用法:命令模式下输入 ftp+IP地址,然后输入用户名密码,前提是你的Linux环境里安装了了ftp服务,登录后用get或者mget命令取文件,用put上传文件,bye命令退出。

二、sftp

  ftp是安全文件传输协议,于ftp类似。

  原理:SFTP是SSH的一部分,在SSH软件包中,已经包含了一个SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作。由于这种传输方式使用了加密/解密技术,文件传送相对来说是很安全的。

  用法:命令模式下输入 sftp 用户名@ip地址,其它命令和ftp类似。

三、ftp和sftp的区别

  我们平时习惯了使用ftp来上传下载文件,尤其是很多Linux环境下,我们一般都会通过第三方的SSH工具连接到Linux,但是当我们需要传输文件到Linux服务器当中,很多人习惯用ftp来传输,其实Linux默认是不提供ftp的,需要你额外安装FTP服务器。而且ftp服务器端会占用一定的VPS服务器资源。其实笔者更建议使用sftp代替ftp。

  主要因为:一、可以不用额外安装任何服务器端程序(我比较中意这个,哈哈~~,很多公司为了安全性Linux没有外网环境,只有SSH的时候,想传输文件是很悲催的问题)。二、会更省系统资源。三、SFTP使用加密传输认证信息和传输数据,相对来说会更安全。四、也不需要单独配置,对新手来说比较简单(开启SSH默认就开启了SFTP)。

  FTP是一种文件传输协议,一般是为了方便数据共享的。包括一个FTP服务器和多个FTP客户端。FTP客户端通过FTP协议在服务器上下载资源。而SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低(不过现实使用当中,没有发现多大差别)。个人肤浅的认为就是:一;FTP要安装,SFTP不要安装。二;SFTP更安全,但更安全带来副作用就是的效率比FTP要低些。

文章参考了以下地址:

http://www.cnblogs.com/xuliangxing/p/7120130.html

https://blog.csdn.net/zhanghao143lina/article/details/53004532

http://www.cnblogs.com/xuliangxing/p/7120205.html

ftp和sftp的更多相关文章

  1. java通过ftp和sftp上传war包上传到Linux服务器实现自动重启tomcat的脚本代码

    ar包自动上传Linux并且自动重启tomcat 用的是jdk1.7出的文件监控 支持ftp和sftp,支持多服务器负载等 配置好config 非maven项目导入直接使用 #\u76D1\u542C ...

  2. 我的代码库-Java8实现FTP与SFTP文件上传下载

    有网上的代码,也有自己的理解,代码备份 一般连接windows服务器使用FTP,连接linux服务器使用SFTP.linux都是通过SFTP上传文件,不需要额外安装,非要使用FTP的话,还得安装FTP ...

  3. FTP、SFTP文件下载内容校验

    描述: 从FTP.SFTP下载的文件做MD5码校验,文件名和MD5码值存放在表格里,表格位置在FTP.SFTP服务器上. os模块只能遍历本地目录/文件,需要先连接FTP.SFTP服务器,将表格下载到 ...

  4. FTP、SFTP与FTPS

    先简单介绍下FTP的基础知识 FTP的传输有两种方式:ASCII.二进制. FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式). 主动模式 FTP ...

  5. 远程登录工具 —— filezilla(FTP vs. SFTP)、xshell、secureCRT

    filezilla:是一个免费开源的 FTP 软件,分为客户端版本和服务器版本,具备所有的 FTP 软件功能. 支持的协议:FTP & SFTP(Secure File Transfer Pr ...

  6. FTP、SFTP、SCP、SSH、OpenSSH关系解密

    FTP(File Transfer Protocol):是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层.FTP ...

  7. Network - FTP与SFTP

    FTP --- FTP File Transfer SFTP --- SSH File Transfer 缩写 名称 协议与端口 安全策略 特征描述 守护进程(linux) 应用场景 SFTP SSH ...

  8. CentOS.7下安装配置FTP和SFTP服务

    一: FTP Centos7中默认已经安装了sshd服务(sftp), vsftpd需要手动安装 1.安装并启动FTP服务 1.1 安装vsftpd 使用 yum 安装 vsftpd yum inst ...

  9. shell使用lftp连接ftp和sftp,并可以指定私钥

    lftp连接ftp在脚本中可以 lftp -c "open username:password@host:port; ls /Friso/20180822/click/mobile/SUCC ...

随机推荐

  1. Java中的IO流(1)

    字节流: //一个字节一个字节的读写 FileInputStream in=new FileInputStream("源文件"); FileOutputStream out=new ...

  2. python3中,pycharm中怎么连接数据库

    因为python3现在还不能直接连接数据库,所有如果想连接,就只能通过以下方法: 在APP中的,__init__.py中,添加以下代码就可以: import pymysql pymysql.insta ...

  3. web.xml中:<context-param>与<init-param>的区别与作用及获取方法

    <context-param>的作用: web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件w ...

  4. 【244】◀▶IEW-Unit09

    Unit 9 Food 1)Model1题目及范文讲解 In the world today, there is a problem with food production. As a result ...

  5. Windows下搭建Subversion&nbsp;服务器

    一.准备工作 1.获取 Subversion 服务器程序 到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序.目前最新的是1.5版本,具体下载地址在:ht ...

  6. 【网络爬虫】【python】网络爬虫(五):scrapy爬虫初探——爬取网页及选择器

    在上一篇文章的末尾,我们创建了一个scrapy框架的爬虫项目test,现在来运行下一个简单的爬虫,看看scrapy爬取的过程是怎样的. 一.爬虫类编写(spider.py) from scrapy.s ...

  7. SQL 分组获取产品 前两条记录

    select * from ( select *, ROW_NUMBER() over(partition by IPAddress order by recordtime desc) as rowN ...

  8. HDU - 5451 Best Solver(循环节+矩阵快速幂)

    Best Solver The so-called best problem solver can easily solve this problem, with his/her childhood ...

  9. HDU - 1150 POJ - 1325 Machine Schedule 匈牙利算法(最小点覆盖)

    Machine Schedule As we all know, machine scheduling is a very classical problem in computer science ...

  10. Android下如何计算要显示的字符串所占的宽度和高度

    Rect bounds = new Rect(); String text = "Hello World"; TextPaint paint; paint = findViewBy ...