云服务器(阿里云)的简单应用 cp 2.ftp服务器安装(安装vsftpd)

云服务器(阿里云)的简单应用 cp 2.ftp服务器安装(安装vsftpd)

一、安装并配置vsftpd

一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资
料的方式。今天的互联网是由几千万台个人计算机、工作站、服务器、小型机、大型机、巨型机
等具有不同型号、不同架构的物理设备共同组成的,而且即便是个人计算机,也可能会装有
Windows、Linux、UNIX、Mac等不同的操作系统。为了能够在如此复杂多样的设备之间解决问
题解决文件传输问题,文件传输协议(FTP,File Transfer Protocol)应运而生。
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端
口,其中端口20(数据端口)用于数据传输,端口21(命令端口)用于接受客户端发出的相关
FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些FTP
客户端工具还可以支持文件的多点下载以及断点续传技术,因此FTP服务得到了广大用户的青睐。
在Linux中,可供我们选择的FTP服务器种类众多。但如果我们想在树莓派上 搭建一个安全、
高性能且稳定性好的FTP服务器,那么就非vsftpd莫属了。Vsftpd 的全称是Very Secure FTP
Daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的FTP服务
器,可以运行在Linux、BSD、Solaris、 HP-UX以及Irix等系统上面。同时,vsftpd也支持很多其
他传统的FTP服务器不支持的良好特性,用八个字概括其特点就是“小巧轻快,安全易用”。

安装 vsftpd 软件:

orange@ubuntu_18:~$ sudo apt install -y vsftpd

备份vsftpd的默认配置文件:

orange@ubuntu_18:~$ cd /etc/
orange@ubuntu_18:/etc$ sudo mv vsftpd.conf vsftpd.conf.orig

使用vi命令编辑新的FTP配置文件如下,该配置文件使能了本地用户登陆同时也使能匿名账号免密 登陆,并指定默认的登陆路径为 /srv/ftp。

orange@ubuntu_18:/etc$ sudo vim vsftpd.conf
在这里插入图片描述

orange@ubuntu_18:/etc$ sudo vim /etc/vsftpd.userlist
在这里插入图片描述

二、匿名用户登陆测试vsftpd

创建FTP服务器匿名用户和本地用户的默认工作根路径和测试文件,把FTP根目录的所有者权限给
本地用户(guowenxue)并修改文件权限755。注意匿名用户(anonymous)也在该路径下,该目录
不能给777的权限,否则匿名用户不能登录!:

orange@ubuntu_18:/etc$ sudo mkdir -p /srv/ftp/
orange@ubuntu_18:/etc$ sudo touch /srv/ftp/test.txt
orange@ubuntu_18:/etc$ sudo chown -R guowenxue.ftp /srv/ftp/
orange@ubuntu_18:/etc$ sudo chmod 755 /srv/ftp

重启vsftpd服务并检查其是否正常运行:

orange@ubuntu_18:/etc$ sudo service vsftpd restart
orange@ubuntu_18:/etc$ sudo netstat -tlnp | grep vsftp
在这里插入图片描述

在访问之前,最好使用,先使用ping命令测试本机与Linux服务器之间是否连通,如果不通的话先 解决网络问题: 如果是虚拟机,则可以使用ifconfig命令查看自己虚拟机的IP地址,用这个IP地址访问;
如果是云服务器主机且没有域名,则可以使用云服务器公网IP地址访问;
如果是云服务器主机且没有域名,但想要用域名实现访问,则可以修改本地域名配置文件
(C:\Windows\System32\drivers\etc\hosts)实现;
如果是云服务器主机且配置好域名了,则可以直接使用域名访问;

在这里插入图片描述

由于chrome内核的浏览器以及不支持ftp协议了 网页端访问只能使用低版本的浏览器访问了
使用老版本浏览器,地址栏输入: ftp://Linux服务器地址 或 ftp://域名 即可匿名登陆访 问FTP服务器了:

在这里插入图片描述

三、本地用户登陆上传测试

出于服务器的安全性考虑,一般匿名登陆用户(anonymous)只允许下载文件,并不给上传和删 除文件的权限,而Linux下的本地用户则给上传、删除文件的权限。这样当我们要上传文件到FTP 站点上时,就可以在Windows系统下使用FTP客户端软件(这里我使用FlashFXP) 用Linux服务器上 的本地用户账号登陆,来实现文件的上传、删除:

在这里插入图片描述
FlashFXP软件左侧是Windows系统,右边是Linux FTP根路径。如果想上传文件到FTP站点上,
直接拖拽过去就开始上传或下载了。
在这里插入图片描述

四、本地其他用户登陆配置

如果我们希望其他Linux本地用户也可以登陆到FTP站点上,我们也可以直接在 /etc/vsftpd.userlist
配置文件中添加相应用户即可,只是这些用户默认的工作路径也是
在/srv/ftp路径下。但很多时候也会因为其他的一些需求,不同的FTP账号需要登陆到Linux系统下的不同路径下工作。
譬如在Web开发中,很多做前端开发的程序员都是在Windows下做开发,而绝大部分的Web服务器都部署在Linux上,另外这些开发人员也不懂Linux基本命令,这样他们迫切需要一种机制把自己的网页源码文件上传到
Web服务器的根路径下来做测试。比较简单的一种实现方式就是给这些 web前端开发人员相应的 FTP
登陆账号,然后配置该用户FTP工作路径到web服务器的根路径下,这样他们在写完前端页面文件之后,直接使用FTP
客户端软件就可以实现上传、测试了。 这里将详细讲解如何添加一个FTP用户并配置其到相应路径下工作:
在Linux下创建一个新的vsftpd登录用户lingyun并设置其密码,并测试一下用户是否能够正常登陆:

orange@ubuntu_18:~$ sudo useradd -s /bin/bash -m lingyun
orange@ubuntu_18:~$ sudo passwd lingyun
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
orange@ubuntu_18:~$ su lingyun
Password:
lingyun@ubuntu_18:/home/guowenxue$ cd
lingyun@ubuntu_18:~$ ls
lingyun@ubuntu_18:~$ exit
exit
orange@ubuntu_18:~$

创建本地用户lingyun的默认工作根路径和测试文件:

orange@ubuntu_18:~$ sudo mkdir -p /srv/www/
orange@ubuntu_18:~$ sudo touch /srv/www/index.html
orange@ubuntu_18:~$ sudo chown -R lingyun.lingyun /srv/www/
orange@ubuntu_18:~$ sudo chmod 755 /srv/www/

修改 vsftpd.userlist文件,添加新的 lingyun 账号运行其登陆 FTP 服务器:

orange@ubuntu_18:~$ sudo vim /etc/vsftpd.userlist
anonymous
guowenxue
lingyun

这时候 lingyun 账号的默认工作路径也是 /srv/ftp,如果想要修改其工作路径则可以 在
/etc/vsftpd/userconfig/ 文件夹下,创建一个 lingyun 的文件,里面指定其默认工作路径:

orange@ubuntu_18:~$ sudo mkdir -p /etc/vsftpd/userconfig/
orange@ubuntu_18:~$ sudo vim /etc/vsftpd/userconfig/lingyun
local_root=/srv/www

重启服务器是配置生效:

orange@ubuntu_18:~$ sudo service vsftpd restart

使用刚创建的 lingyun 账号登陆,这时候我们可以看到 登陆后的工作路径并不是默认的 /srv/ftp 路径下,而是 /srv/www了。
在这里插入图片描述
在这里插入图片描述

五、防火墙配置

如果FTP服务器不能正常访问的话,可能是Linux系统防火墙正在运行,并默认阻止了相应端口的访问。这时,我们可以先简单粗暴地关闭防火墙来验证是否是它引起的问题:

orange@ubuntu_18:~$ sudo service ufw stop

如果我们把防火墙关闭之后FTP站点就能正常访问了,那就可以确定是防火墙引起的问题了,否则
排查其他的错误原因。如果我们想让系统防火墙正常运行的话,则我们要打开FTP的相应端口:

orange@ubuntu_18:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

查看当前的防火墙策略,这里有我之前添加的SSH(22号端口)的策略:

orange@ubuntu_18:~$ sudo ufw status numbered
Status: active
To Action From


[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 22/tcp (v6) ALLOW IN Anywhere (v6)

如果不需要,可以删除这两条策略:

orange@ubuntu_18:~$ sudo ufw delete 2
orange@ubuntu_18:~$ sudo ufw delete 1

添加 FTP(20, 21号) 和 SSH(22号)端口:

orange@ubuntu_18::~$ sudo ufw allow proto tcp from any to any port
20,21,22
Rule added
Rule added (v6)
orange@ubuntu_18::~$ sudo service ufw restart
orange@ubuntu_18::~$ sudo ufw status
Status: active
To Action From


20,21,22/tcp ALLOW Anywhere
20,21,22/tcp (v6) ALLOW Anywhere (v6)

根据阿里云的安全策略 除了内部防火墙还有外部防火墙是需要自己手动开启服务器端口的:
我比较偷懒 直接开启了所有端口 大家实践时为了安全可只打开服务所需的端口

在这里插入图片描述
六、FTP服务器PASV和PORT模式

如果使用旧版本Chrome浏览器可以正常访问,但是使用Windows自带的IE浏览器不能访问的话,这
是因为FTP服务器默认工作在PORT模式,而IE浏览器默认使用PASV模式。这时候我们有必要了解
FTP服务器的这两种模式,这样在配置FTP服务器碰到问题时才能分析解决问题。 下面接着介绍FTP客户端访问服务器端是的具体流程: 命令连接
当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过
程,这个过程就叫做命令连接。客户端向服务器发起连接请求的时候,客户端会随即的选择某个
TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三方握手来实现的。当三方握手 完成之后,客户端与
服务器之间便建立了命令连接通道。而该通道主要用来传输FTP的相关指
令,如查看文件列表、删除文件等等,而不能用来在客户端与服务端进行文件传输。 数据连接
如果此时客户端需要往FTP服务器上上传或者下载文件的话,就需要在客户端与服务器端再建立

一条额外的数据传输连接。这时候就有主动模式(PORT)和被动模式(PASV)两种方式:

主动(PORT)模式

主动模式的FTP是指服务器主动连接客户端的数据端口,其具体工作流程是:
客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接
客户端开始监听 N+1端口,并向服务器发出PORT N+1命令;
服务器接收到命令后,会用其本地的FTP数据端口20端口来连接客户端指定的端口N+1,
进行数据传输。
在这里插入图片描述

被动(PASV)模式

被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口,其具体工作流程是:
客户端以随机非特权端口连接服务端的21端口;
服务端开启一个非特权端口为被动端口,并返回给客户端;
客户端以非特权端口+1的端口主动连接服务端的被动端口;
在这里插入图片描述

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。 大部分FTP客户端默认使用PASV方式,IE默认使用PORT方式。在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。

我们可以在配置文件/etc/vsftpd.conf 中添加 PASV模式的配置然后重启服务即可。具体配置如下:

orange@ubuntu_18:~$ sudo vim /etc/vsftpd.conf


#本地用户登录的配置文件夹,可以分别指定每个用户的登录路径。 user_config_dir=/etc/vsftpd/userconfig
设置vsftpd服务为PASV模式,解决IE不能访问的问题
max_clients=100 /最大用户
pasv_enable=YES /确定开启被动模式
pasv_min_port=6000
pasv_max_port=6100 /指定使用的端口区间 需要按上一步的操作开启

修改配置文件之后,重启服务器再重新访问:
orange@ubuntu_18:~$ sudo service vsftpd restart
接下来我们使用FTP客户端软件 FlashFXP 登陆可以看到当前FTP为PASV模式了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值