站点图标 独书先生

阿里云无法连接FTP服务器

问题

在安装wordpress插件的时候,无法连接FTP服务器,发现阿里云ECS默认是没有安装ftp服务的

解决

参考官网教程安装vsftpd

步骤

1. root登录aliyun ssh

2. yum安装vsftpd

yum install -y vsftpd

3. 设置FTP服务开机自启动

systemctl enable vsftpd.service

4. 启动ftp服务

systemctl start vsftpd.service

5. 设定用户

-d指向目录/home/ftpuser,-g创建用户组ftp,-s /sbin/nologin禁止ftpuser用户登录SSH

useradd -d /home/ftpuser -g ftp -s /sbin/nologin ftpuser

为ftpuser设置密码

passwd ftpuser

更改/var/www目录的拥有者为ftpuser。

chown -R ftpuser:ftp /var/www

6. 修改vsftpd.conf

vim /etc/vsftpd/vsftpd.conf
#除下面提及的参数外,其他参数保持默认值即可。

#修改下列参数的值
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#监听IPv4 sockets
listen=YES
#在行首添加#注释掉以下参数,关闭监听IPv6 sockets
#listen_ipv6=YES

#添加下列参数
#设置本地用户登录后所在目录
local_root=/var/www
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例公网IP
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_min_port=50000
#设置被动模式下,建立数据传输可使用的端口范围的最大值
pasv_max_port=60000

7. 添加 root为例外

vim /etc/vsftpd/chroot_list # 

8. 重启

systemctl restart vsftpd.service

9. 添加安全组

自定义TCP, 21/21, 0.0.0.0/0
自定义TCP, 50000/60000, 0.0.0.0/0
  1. 谷歌浏览器访问:ftp://<FTP服务器公网IP地址>:21验证

FAQ

1. 外网无法访问可能为防火墙问题

ftp默认的端口为21,centos默认没有开启,则修改iptables文件

vi /etc/sysconfig/iptables

新增:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

保存和关闭文件,重启防火墙:

service iptables restart

2. 登录后无法返回目录和上传文件,可能要设置selinux

查看selinux状态

getsebool -a | grep ftp

如果出现:

getsebool:  SELinux is disabled

则需要先开启SELinux

出现allow_ftpd_full_access off或者ftp_home_dir off即没有开启外网访问
执行

setsebool -P allow_ftpd_full_access 1   

setsebool -P ftp_home_dir off 1

重启vsftpd

systemctl restart vsftpd.service
  1. 文件开启权限
chmod 777 /var/www
  1. 偶现不成功,请在评论区讨论

参考

https://help.aliyun.com/document_detail/92048.html
https://www.kancloud.cn/chandler/bc-linux/52710

退出移动版