【Linux】部署vfstpd服务端,让客户端通过访问不同的端口号,可以实现访问不同的目录
要实现 vsftpd(Very Secure FTP Daemon)服务端,让客户端通过访问 不同的端口号访问不同的目录,可以采用 运行多个 vsftpd 实例,每个实例监听不同的端口,并使用不同的配置文件,其中根目录(local_root
)设置为不同的目录路径。
下面是详细的部署步骤:
1. 安装 vsftpd
sudo apt install vsftpd # Debian/Ubuntu
# 或
sudo yum install vsftpd # CentOS/RHEL
2. 创建多个配置文件
比如,我们希望:
- 通过 21端口 访问
/ftp/public
- 通过 2121端口 访问
/ftp/private
创建两个配置文件:
sudo mkdir -p /etc/vsftpd_multi
/etc/vsftpd_multi/vsftpd_21.conf
listen=YES
listen_port=21
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/ftp/public
pasv_min_port=30000
pasv_max_port=30010
/etc/vsftpd_multi/vsftpd_2121.conf
listen=YES
listen_port=2121
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/ftp/private
pasv_min_port=30011
pasv_max_port=30020
💡 每个实例需要使用 不同的 PASV 被动端口范围,否则可能端口冲突。
3. 创建对应目录和权限
sudo mkdir -p /ftp/public
sudo mkdir -p /ftp/private
sudo chown -R ftp:ftp /ftp/public
sudo chown -R ftp:ftp /ftp/private
4. 启动多个 vsftpd 实例
你可以使用 systemd 来启动多个实例:
创建 systemd 服务文件
sudo cp /lib/systemd/system/vsftpd.service /etc/systemd/system/vsftpd@.service
编辑 /etc/systemd/system/vsftpd@.service
内容如下(重点是参数 -olisten=YES -olisten_port=XXXX
要改为我们配置文件):
[Unit]
Description=Vsftpd ftp daemon instance %i
After=network.target[Service]
ExecStart=/usr/sbin/vsftpd /etc/vsftpd_multi/vsftpd_%i.conf[Install]
WantedBy=multi-user.target
启动服务
sudo systemctl daemon-reexec
sudo systemctl daemon-reloadsudo systemctl start vsftpd@21
sudo systemctl start vsftpd@2121sudo systemctl enable vsftpd@21
sudo systemctl enable vsftpd@2121
5. 客户端测试
用 FTP 客户端连接:
ftp://your_ip:21
访问/ftp/public
ftp://your_ip:2121
访问/ftp/private
其他建议
- 使用防火墙开放相应端口(21、2121、30000-30020)
- 可以加上用户隔离(每个端口让不同用户登录)
- 可扩展为更多端口实例