在Linux系统中搭建vsftp远程连接服务,需要先完成程序安装、配置文件调整、权限设置以及网络访问规则适配,整个流程操作清晰,按照步骤执行即可快速实现功能。

一、安装vsftp程序
不同Linux发行版的安装命令略有差异,主流系统的安装方式如下:
- CentOS/RHEL系统使用yum包管理器安装:
# 安装vsftp yum install -y vsftpd # 设置开机自启 systemctl enable vsftpd
- Ubuntu/Debian系统使用apt包管理器安装:
# 更新软件源 apt update # 安装vsftp apt install -y vsftpd # 设置开机自启 systemctl enable vsftpd
二、核心配置文件修改
vsftp的主配置文件路径为/etc/vsftpd/vsftpd.conf,需要根据远程连接需求调整以下核心参数:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| anonymous_enable | NO | 禁止匿名用户登录,提升安全性 |
| local_enable | YES | 允许本地系统用户登录 |
| write_enable | YES | 允许登录用户执行写操作,包括上传、删除文件 |
| chroot_local_user | YES | 将用户限制在自己的家目录中,避免访问系统其他路径 |
| allow_writeable_chroot | YES | 当chroot限制开启时,允许用户对自己的家目录有写权限 |
| pasv_enable | YES | 开启被动模式,适配大部分客户端网络环境 |
| pasv_min_port | 30000 | 被动模式最小端口 |
| pasv_max_port | 31000 | 被动模式最大端口 |
修改完成后保存配置文件,执行以下命令重启vsftp服务使配置生效:
systemctl restart vsftpd
三、用户权限设置
如果需要使用指定系统用户进行远程连接,需要先创建用户并设置密码,同时调整家目录权限:
# 创建ftp用户,禁止登录系统shell useradd -s /sbin/nologin ftpuser # 设置用户密码 passwd ftpuser # 调整用户家目录权限,确保用户有读写权限 chmod 755 /home/ftpuser
如果需要允许用户访问指定自定义目录,可以修改用户家目录路径,同时设置目录权限:
# 创建自定义目录 mkdir -p /data/ftp # 设置目录所有者为ftp用户 chown -R ftpuser:ftpuser /data/ftp # 修改用户的家目录为自定义目录 usermod -d /data/ftp ftpuser
四、防火墙与SELinux调整
1. 防火墙规则配置
vsftp使用21端口作为控制端口,被动模式端口范围为30000到31000,需要在防火墙中开放这些端口:
- firewalld防火墙(CentOS 7及以上、RHEL 7及以上):
# 开放21端口 firewall-cmd --permanent --add-port=21/tcp # 开放被动模式端口范围 firewall-cmd --permanent --add-port=30000-31000/tcp # 重新加载防火墙规则 firewall-cmd --reload
- ufw防火墙(Ubuntu系统):
# 开放21端口 ufw allow 21/tcp # 开放被动模式端口范围 ufw allow 30000:31000/tcp # 重新加载防火墙规则 ufw reload
2. SELinux设置
如果系统开启了SELinux,需要允许vsftp相关访问规则,否则可能出现权限拒绝问题:
# 允许ftp用户访问家目录 setsebool -P ftp_home_dir on # 允许vsftp读写文件 setsebool -P allow_ftpd_full_access on
如果暂时不需要SELinux,也可以临时关闭SELinux:
# 临时关闭SELinux setenforce 0 # 永久关闭需要修改/etc/selinux/config文件,将SELINUX设置为disabled
五、连接测试与问题排查
配置完成后,可以使用FTP客户端工具或者命令行进行连接测试:
# 使用ftp命令连接,替换为你的服务器IP ftp 192.168.0.1 # 输入之前创建的用户名ftpuser和密码
如果连接失败,可以按照以下思路排查:
- 检查vsftp服务是否正常运行:
systemctl status vsftpd - 检查配置文件语法是否正确:
vsftpd -v - 检查防火墙端口是否开放:
firewall-cmd --list-ports或者ufw status - 检查SELinux是否阻止访问:查看
/var/log/audit/audit.log日志 - 检查用户家目录权限是否正确,是否存在读写限制
注意:如果使用被动模式连接,需要确保客户端网络没有阻止被动模式端口的访问,部分公网环境可能需要运营商开放对应端口范围。