在 CentOS 7 使用 ftp 服务

发表于 2019-01-10 16:28:17
阅读 33

介绍

介绍

vsftp是一款非常好用且免费的FTP服务器软件,通过这个软件我们就可以轻松搭建FTP服务了

vsftp已被yum收录,我们可以通过yum来快速安装它

安装

安装

通过yum安装

yum -y install vsftpd

建立ftp目录

mkdir /tongfu.net/web/ftpshare

创建用户

useradd -d /tongfu.net/web/ftpshare -s /bin/bash ftpshare

授权

chown ftpshare.ftpshare /tongfu.net/web/ftpshare

设置密码

passwd ftpshare

配置

打开配置文件

> vi /etc/vsftpd/vsftpd.conf

关闭匿名访问(把YES改成NO)

anonymous_enable=NO

锁定用户访问用户目录(把前面的#去掉)

chroot_local_user=YES

关闭用户目录写权限限制(增加一行)

allow_writeable_chroot=YES

开启PASV模式,设置PASV模式端口范围

pasv_enable=YES
pasv_min_port=20
pasv_max_port=20

启动

启动

systemctl start vsftpd

开机启动

systemctl enable vsftpd

测试

安装ftp

yum -y install ftp

使用curl测试

curl 'ftp://ftpshare:ftppwd@localhost/file'

Port模式

介绍

port模式适合客户端没有防火墙的情况,这种情况在早期的windows系统里是很容易满足的

port模式下需要开放 20 端口

总结来说就是port模式下,数据传输端口(随机端口)是客户端负责监听的

工作原理

  • 客户端连接服务器端 21 端口

  • 客户端监听被动端口(非特权端口)+1

  • 客户端发送“Port [监听端口]”给服务器端

  • 服务器端连接客户端的 [监听端口]

  • 两端进行数据传输

Pasv模式

介绍

pasv模式则适合两边都有防火墙的情况,这更加符合windows 7开始的新款系统的情况,因为新款系统默认是开启防火墙的

pasv模式下需要开放一个允许的端口范围

总结来说就是pasv模式下,数据传输端口(随机端口)是服务器端负责监听的

工作原理

  • 客户端连接服务器端 21 端口

  • 客户端发送“Pasv”给服务器端

  • 服务器端在给定范围内随机选一个端口监听起来

  • 服务器端发送“Port [监听端口]”给客户端

  • 客户端连接服务器端的 [监听端口]

  • 两端进行数据传输

常见问题

无法列出文件列表

PASV模式下报错(ms-dos)

ftp> quote PASV
227 Entering Passive Mode (10,16,1,105,106,132).
ftp> dir
425 Failed to establish connection.

PASV模式下报错(linux)

ftp> dir
227 Entering Passive Mode (10,16,1,105,186,102).
ftp: connect: No route to host

解决方法:

客户端关闭防火墙