CentOS6.8搭建FTP服务器

安装vsftpd

使用rpm -qa | grep vsftpd查看是否已安装
使用yum install vsftpd进行安装,一路y过去即可
将其加入开机启动chkconfig vsftpd on

vsftpd配置

anonymous_enable=YES(NO)是否允许匿名登录
guest_enable=YES (NO)若这个值设定为 YES 时,那么任何非 anonymous 登入的账号,均会被假设成为 guest (访客) ! 至于访客在 vsftpd 当中,预设会取得 ftp 这个使用者的相关权限。但可以透过 guest_username 来修改。
guest_username=ftp在 guest_enable=YES 时才会生效,指定访客的身份而已。

虚拟用户配置

vsftp是支持使用虚拟用户登录ftp的,即这个用户只能使用ftp而不能通过命令行等其他方式登录服务器。
首先需要安装这个工具,
yum install db4 db4-utils
然后,创建保存用户名和密码的文件,这里我使用/etc/vsftpd/vuser_passwd
文件中输入你要创建的虚拟用户和密码,一行用户名一行密码,比如这样

test1
123456
test2
123456

这样就创建了test1和test2两个密码均为123456的用户
接着,用刚安装的db4工具生成需要的认证文件,命令如下
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,再增加以下两句

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

更多具体的配置可以去这里查看

配置PASV模式

FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode)。
至于为什么要开启PSAV模式,这里引用一下百科的解释

路由上有两个ip一个是内网ip(也就是你的网关地址)另外一个是外网IP,你所有LAN中的计算机都是共享这个218.63.1.5访问INTERNET的(中间通过了192.168.1.1这个网关),让我们来看一个连接的详细过程,以便您更进一步了解为什么需要设置成为PASV mode 传送:当您通过下载工或使用浏览器下载影片的时候就开始连接FTP服务器, 当FTP服务收到你的连接请求后发送应答信息给客户并开始等待用户的认证信息,-->认证通过后开始建立数据连接如果你不是设置成为pasv模式,那么客户段(下载工具)会在本地计算机开一个数据端口,然后发送一条“命令”给FTP服务段,(我已打开了n端口你现在可以连接我),那么FTP服务器段就开始连接你ip地址的N端口,(但是连接是失败的) 因为你是通过192.168.1.1 这个网关(你的路由设备)访问internet的ftp服务段他实际上是同你的外网地址为218.63.1.5的路由设备连接,根本就连接不上你下载工具中打开的端口,例如你使用的是 192.168.1.2 这个客户机,FTP服务段此时无法同你计算机(192.168.1.2)监听端口N连接上,所以此时你会看到服务器反馈的错误信息,提示你192.168.1.2打开的端口无法连接之类的, 信息此时你就需要把传送模式设置成为PASV模式,而如果你使用的是PASV模式那么当你ftp通过认证后,客户段首先向服务器发送一条PASV命令,服务段接受到命令后打开一个端口并告诉客户段“我已打开了一个端口,你此时可以来连接了" 客户段(下载工具)接受到信息后,就去连接服务段已经打开了的端口,从而完成数据连接,所有ftp下载的数据流都将通过这个端口传送。

具体配置如下
打开/etc/vsftpd/vsftpd.conf,在末尾添加

pasv_enable=YES   //开启PASV模式
pasv_min_port=0   //最小端口号,0即任意
pasv_max_port=0   //最大端口号,0即任意

其他

  • 如果你使用的是云服务器,比如阿里云,因为vsftp需要使用21端口,所以需要在服务器安全组配置中开启21端口
  • 如果遇到能够成功登录却获取不到目录的情况,打开/etc/vsftpd/vsftpd.conf添加pasv_address=你的服务器ip pasv_addr_resolve=yes这两行配置

你可能感兴趣的:(CentOS6.8搭建FTP服务器)