Linux下安装FTP服务

时间:2024-03-17 12:59:47

一、简介

FTP(File Transfer Protocol),中文名文件传输协议,是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

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

题外话

在此,作为一名挨踢选手,我想到了经常使用的一个软件SecureCRT在 进行传输文件时经常用到的一个窗口“SFTP”,名字如此像,有联系吗?顺手一查,果然!

sftp是SSH File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。

那么如何使用呢?

windows中可以使用Core FTP,FileZilla, WinSCP,Xftp,SecureCRT来连接SFTP进行上传,下载文件,建立,删除目录等操作。

linux下直接在终端中输入:sftp [email protected] ip(or remote host name)。出现验证时,只需填入正确的密码即可实现远程链接。登入成功后终端呈现出:sftp>…

在sftp的环境下的操作就和一般ftp的操作类似了,ls,rm,mkdir,dir,pwd,等指令都是对远端进行操作,如果要对本地操作,只需在上述的指令上加‘l’变为:lls,lcd, lpwd等。当然既然是ftp,当然得说它的上传和下载咯!

上传:put /path/filename(本地主机) /path/filename(远端主机);

下载:get /path/filename(远端主机) /path/filename(本地主机)。

另外提一下sftp在非正规端口(正规的是22号端口)登录:sftp -o port=1000 [email protected] ip.

当我们使用Alt+P快捷键时其实就是利用了SFTP这个功能,只不过封装了一下而已。

二、详解

FTP的两个TCP连接

控制连接(TCP 21端口)主要用于实现FTP协议控制信令传送,服务器端打开TCP 21端口被动等待客户端发起连接命令;客户端则以主动方式打开随机端口,发起连接的建立请求。

数据连接(TCP 20端口)主要用于实现应用数据传送,服务器的数据连接端使用端口20。服务器执行主动打开数据连接,通常也执行主动关闭数据连接 。

FTP连接建立的两种方式

1 主动方式

主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:

FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输。在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。
Linux下安装FTP服务
2.被动方式

被动方式也称为PASV方式,被动方式的主要特点是:

FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输。在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。
Linux下安装FTP服务
FTP主动、被动方式的选择

当FTP服务器与FTP客户端均处于同一局域网内,即两者之间互访不存在防火墙或其他安全设备时,主动方式、被动方式均可实现FTP文件分发共享。

如果FTP服务器处于路由器,防火墙或其他NAT设备之后,建议使用被动模式(passive mode)。因为在主动模式下传输数据时,由FTP发起的数据传输一般会被客户端网关的防火墙阻断。

关于主动与被动FTP优缺点的简要总结

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

针对上述防火墙带来的问题,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

详解

https://zhuanlan.zhihu.com/p/34109504

常见FTP客户端支持的连接方式
PORT:主动模式
EPRT:增强主动模式
PASV:被动模式
EPSV:增强被动模式
Linux下安装FTP服务
Linux下安装FTP服务

三、安装

1.在目标Linux系统下,如果常规的yum -y install vsftpd命令无法成功安装ftp,那么你需要通过网络资源查找到ftp相对应的rpm包,进行原始的手动安装,因为我进行的是一个项目安装包的升级,所以只能用rpm包,并且,Centos7和Centos8的rpm包不通用

找到一个靠谱的链接: RPM resource vsftpd(x86-64)

2.下载完毕后,把这个rpm安装包拖到你的目标Linux系统的某个路径下,输入安装命令:rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm,很快你就会看到安装成功的英文提示!使用命令:rpm -q vsftpd,查看安装的版本已验证是否安装成功
此时就已经成功在机器上安装了FTP服务。

但是这只是安装服务,如果你需要它作为服务器或者客户端,还需要继续

3.安装ftp的客户端,同样如果命令yum -y install ftp无法让你如愿,请下载ftp客户端的rpm包。点击连接RPM resource ftp
选择自己喜欢的包,需要的只是一个面向网络的搜索链接而已。

4.于是你在其他Linux上安装了ftp的客户端,并想尝试上传一个文件到这个ftp服务器上,你输入了:
ftp x.x.x.x(提供Ftp服务的IP地址),跳出No Route to Host这样刺眼字眼,聪明如我的你,肯定想到了防火墙设置?!所有,接下来,你只需要提供ftp服务的机器上,输入两行命令:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

5.当你避开这个问题时,你却发现ftp需要输入用户名和密码,root不可用,因为在/etc/vsftpd下,你会看见ftpusers、user_list这两个文件,上面提供了黑名单,root是默认被禁止使用的用户名,那么这个时候,肿么办?!很简单,一是修改这2个文件,把root从黑变白(#root),这种方式,因为考虑到安全因素,我们还是自己添加一个用户名和密码吧!
添加用户命令: useradd ftpadmin -s /sbin/nologin
设置ftpadmin用户密码,运行命令:passwd ftpadmin
具体内容参考:Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录

6.至此,就可以很开心的在ftp客户端*问ftp服务了!