服务器:CentOS 7.2 64 位
FTP服务端:vsftpd
客户端:FileZilla
文章最后是我遇到的两个问题及解决方案
安装vsftpd
- 安装
yum install vsftpd -y
- 启动
service vsftpd start
- 确认
netstat -tunlp
(program name有vsftpd) - 测试
telnet 公网IP 21
(返回220)
配置vsftpd
输入:vi /etc/vsftpd/vsftpd.conf
按i或a进入编辑模式,底部有个insert
标识,将文件中的anonymous_enable=YES
改为 anonymous_enable=NO
(只把YES改成NO就行了,其他不动),修改完成后按下【Esc】退出,然后在底部输入:wq!
保存退出操作。
本次更改内容为:不允许匿名登录
关于linux和Xshell的更多操作请参考:
我的linux也是入门水平,只是最近经常用才有所提高,如有错误敬请指出
添加用户
- 添加用户
useradd -m -d /home/用户名 -s /sbin/nologin 用户名
- 设置密码
passwd 用户名
然后输入密码即可
问题
- 问题1:测试telnet连接不上
一般安装启动没什么问题,在windows测试连接的时候总是连接不上,后来发现是因为我启动了安全组没有配置21端口,因为服务器被攻击过一次,后来就配置了安全组,安全组中没有配置21端口。
解决方案:在安全组策略中加上21端口即可,FTP属于TCP协议。
- 问题2:本地ftp客户端读取目录失败,连接超时
问题出现在 PASV 命令处。原因在于 FTP 协议在部分网络架构上的不适,我用的腾讯云。
FTP 客户端默认被动模式传输,因此在通信过程中会去寻找服务器端的 IP 地址进行连接,但是由于腾讯云的外网 IP 不是直接配在网卡上,因此在被动模式下客户端无法找到有效 IP (只能找到云服务器内网 IP ,内网 IP 无法直接和外网通信),故无法建立连接。
解决方案:
- 将客户端传输模式改为主动即可;
- 如果客户端网络环境要求被动模式,输入
vi /etc/vsftpd/vsftpd.conf
新增这些语句:
pasv_address=外网 IP
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=2048
然后保存,重启,稍等一会儿就可以正常连接了