1.通过yum来安装vsftpd
[root@localhost ~]# yum install vsftpd
2.设置为开机启动
[root@localhost ~]# chkconfig vsftpd on
3.把下面几行注释去掉,让其配置生效:
vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES #这行可能需自己写
pam_service_name=vsftpd
userlist_enable=YES
4.配置保存后重启vsftpd服务:
[root@localhost ~]# service vsftpd restart
添加用户及额外配置
1.设置vsftp的帐号。
[root@localhost ~]# useradd -d /home/htdocs -s /sbin/nologin 用户名
2.为添加的账号设置密码
[root@localhost ~]# passwd 用户名
根据提示操作
这样的话,基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。
1.添加ip_conntrack_ftp 模块
[root@localhost ~]# vi /etc/sysconfig/iptables-config
添加下面一行
IPTABLES_MODULES="ip_conntrack_ftp"
2.打开21端口
[root@localhost ~]# vi /etc/sysconfig/iptables
添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
3.重启iptables使新的规则生效
[root@localhost ~]# service iptables restart
到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查
[root@localhost ~]#getsebool -a |grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。
[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1
到此,安装完毕。
启动/重启/关闭
/sbin/service vsftpd start
/sbin/service vsftpd restart
/sbin/service vsftpd stop
ps -aux | grep ftpd
netstat -na | grep 21
ftp服务器设置防火墙
问题, 连接成功
错误: 无法打开传输通道。原因:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
错误: 无法取得目录列表
先关闭ftp服务端 service vsftpd stop
解决办法
第一步编辑/etc/vsftpd/vsftpd.conf
添加两行
pasv_min_port=40000
pasv_max_port=40009
第二步添加防火墙设置(添加40000-40009端口开放)
打开防火墙配置文件
vi /etc/sysconfig/iptables
增加下面一行
-A INPUT -p tcp -m multiport --dport 40000:40009 -j ACCEPT
重启防火墙
service iptables restart
重启vsftpd /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf(没用过,不确定对不对)
启动 service vsftpd start
被动和主动模式简介
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到 Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接