在Linux云主机上设置FTP服务,推荐使用vsftpd(非常安全的FTP守护进程),以下是详细步骤:
一、安装vsftpd
Ubuntu/Debian sudo apt update sudo apt install vsftpd CentOS/RHEL sudo yum install vsftpd Rocky/AlmaLinux sudo dnf install vsftpd
sudo systemctl start vsftpd sudo systemctl enable vsftpd sudo systemctl status vsftpd
二、基本配置
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
sudo nano /etc/vsftpd.conf
允许本地用户登录 local_enable=YES 允许上传文件 write_enable=YES 设置本地用户的umask local_umask=022 不允许匿名登录(建议禁用) anonymous_enable=NO 限制用户在其主目录中(重要安全设置) chroot_local_user=YES allow_writeable_chroot=YES 被动模式设置(适用于云服务器) pasv_enable=YES pasv_min_port=40000 pasv_max_port=41000 pasv_address=你的公网IP地址 # 如果云主机有独立IP 日志设置 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log 限制用户(可选) userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO # 仅允许列表中的用户
三、用户管理
创建用户(不分配登录shell,只能用于FTP) sudo useradd -m -s /bin/false ftpuser sudo passwd ftpuser 如果使用用户列表,添加用户到允许列表 echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
修改用户主目录权限 sudo chown -R ftpuser:ftpuser /home/ftpuser sudo chmod 755 /home/ftpuser
四、防火墙配置
Ubuntu/Debian (ufw) sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 40000:41000/tcp sudo ufw reload CentOS/RHEL (firewalld) sudo firewall-cmd --permanent --add-port=20/tcp sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=40000-41000/tcp sudo firewall-cmd --reload 或者使用ftp服务预设 sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
五、云主机特殊配置
如果云主机有弹性公网IP或浮动IP:
在vsftpd.conf中添加 pasv_address=你的公网IP地址 pasv_promiscuous=YES
在云平台控制台添加入站规则:
- 端口 20-21 (TCP)
- 被动模式端口范围(如40000-41000)
六、重启服务并测试
重启vsftpd sudo systemctl restart vsftpd 测试连接 ftp localhost 或从客户端连接 ftp 你的服务器IP
七、SSL/TLS加密(可选但推荐)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/vsftpd.pem \ -out /etc/ssl/private/vsftpd.pem
在vsftpd.conf中添加 ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
八、替代方案:SFTP(更安全)
如果只需要文件传输,建议使用SFTP(基于SSH):
SFTP已内置在SSH中,无需额外安装
创建SFTP专用用户
sudo useradd -m -s /bin/false sftpuser
sudo passwd sftpuser
配置SSH
sudo nano /etc/ssh/sshd_config
添加以下内容:
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /home/sftpuser
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
重启SSH
sudo systemctl restart sshd九、故障排查
检查vsftpd状态 sudo systemctl status vsftpd 查看日志 sudo tail -f /var/log/vsftpd.log sudo journalctl -u vsftpd
1、连接超时:检查防火墙/安全组
2、530登录错误:检查用户权限和PAM配置
3、500 OOPS: vsftpd: refusing to run with writable root...:
# 解决方案1:允许可写的chroot allow_writeable_chroot=YES # 解决方案2:修改目录权限 sudo chmod a-w /home/ftpuser
安全建议:
1、使用SFTP替代FTP(更安全)
2、如需使用FTP,务必启用SSL/TLS
3、限制用户访问范围(chroot)
4、定期更新vsftpd软件
5、使用强密码策略
6、考虑使用fail2ban防止暴力破解
选择哪种方案取决于你的具体需求:
简单内部使用:基础FTP配置
公网传输:FTP+SSL或直接使用SFTP
最高安全性:SFTP或FTPS(FTP over SSL)
文章摘自:https://idc.huochengrm.cn/zj/23504.html
评论
利绮露
回复在Linux云主机上设置FTP服务,推荐使用vsftpd,步骤包括安装、配置、用户管理、防火墙设置等,并建议使用SFTP或FTP+SSL增强安全性。