在云主机上搭建FTP服务器,以下是详细步骤(以Linux系统为例):
一、安装FTP服务器软件
Ubuntu/Debian sudo apt update sudo apt install vsftpd CentOS/RHEL sudo yum install vsftpd
Ubuntu/Debian sudo apt install proftpd CentOS/RHEL sudo yum install proftpd
二、配置vsftpd(以vsftpd为例)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
sudo nano /etc/vsftpd.conf
禁止匿名登录 anonymous_enable=NO 允许本地用户登录 local_enable=YES 允许写入 write_enable=YES 设置本地用户创建文件的umask local_umask=022 启用chroot,将用户限制在其主目录 chroot_local_user=YES allow_writeable_chroot=YES 用户列表文件 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO # 仅允许列表中的用户登录 被动模式配置(重要:需要开放端口范围) pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000 pasv_address=你的云主机公网IP # 重要!
三、创建FTP用户
创建用户(指定主目录,禁止shell登录) sudo useradd -m -d /home/ftpuser1 -s /bin/false ftpuser1 sudo passwd ftpuser1 # 设置密码
1. 创建用户数据库文件 sudo sh -c 'echo "ftpuser1" >> /etc/vsftpd/virtual_users.txt' sudo sh -c 'echo "password1" >> /etc/vsftpd/virtual_users.txt' sudo sh -c 'echo "ftpuser2" >> /etc/vsftpd/virtual_users.txt' sudo sh -c 'echo "password2" >> /etc/vsftpd/virtual_users.txt' 2. 生成数据库文件 sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db sudo chmod 600 /etc/vsftpd/virtual_users.db 3. 创建PAM配置文件 sudo nano /etc/pam.d/vsftpd.virtual 添加内容: auth required pam_userdb.so db=/etc/vsftpd/virtual_users account required pam_userdb.so db=/etc/vsftpd/virtual_users
四、设置目录权限
创建FTP根目录 sudo mkdir -p /var/ftp sudo chown nobody:nogroup /var/ftp sudo chmod 755 /var/ftp 为用户创建目录 sudo mkdir -p /home/ftpuser1/ftp sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp
五、防火墙配置
开放21端口(控制连接) sudo ufw allow 21/tcp 开放被动模式端口范围 sudo ufw allow 30000:31000/tcp CentOS使用firewalld sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp sudo firewall-cmd --reload
- 登录云服务商控制台
- 找到安全组/防火墙规则
- 添加入站规则:
- 端口21(TCP)
- 端口30000-31000(TCP,被动模式)
六、启动服务
启动vsftpd sudo systemctl start vsftpd sudo systemctl enable vsftpd 检查状态 sudo systemctl status vsftpd
七、测试连接
本地测试 ftp localhost 使用客户端连接 主机:云主机公网IP 用户名/密码:ftpuser1/password1 端口:21
八、安全增强建议
生成SSL证书 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/vsftpd.key \ -out /etc/ssl/certs/vsftpd.crt 配置vsftpd使用SSL ssl_enable=YES rsa_cert_file=/etc/ssl/certs/vsftpd.crt rsa_private_key_file=/etc/ssl/private/vsftpd.key
在配置文件中添加 deny_file=*.php,*.sh,*.exe # 禁止上传特定文件 max_clients=10 # 最大连接数 max_per_ip=3 # 每个IP最大连接
启用日志 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log
常见问题解决
1、连接超时:检查云主机安全组规则
2、530 Login incorrect:检查用户名/密码,用户是否在允许列表
3、550 Permission denied:检查目录权限和chroot设置
4、被动模式失败:确保被动模式端口范围已开放
替代方案:使用SFTP(更安全)
如果不需要FTP协议,建议使用SFTP(基于SSH):
1. 安装SSH(通常已安装)
2. 创建用户
sudo useradd -m sftpuser1
sudo passwd sftpuser1
3. 配置SSH
sudo nano /etc/ssh/sshd_config
添加:
Match User sftpuser1
ForceCommand internal-sftp
ChrootDirectory /home/sftpuser1
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no这样可以通过SSH客户端连接,更安全且无需额外配置防火墙规则。
文章摘自:https://idc.huochengrm.cn/zj/21121.html
评论
易痴凝
回复在Linux云主机上搭建FTP服务器,推荐使用vsftpd,安装后配置用户、权限、防火墙,并开启SSL/TLS加密和日志监控,确保安全高效。
太史浦泽
回复在Linux云主机上搭建FTP服务器,推荐使用vsftpd,步骤包括安装、配置、创建用户、设置权限、防火墙配置、启动服务,并建议使用SSL/TLS加密和限制IP访问以提高安全性。