迁移 Debian 上的 FTPServer(通常指 vsftpd + SSL/TLS) 时,核心目标是:
✅ 用户、权限、配置保持一致
✅ 数据完整迁移
✅ 证书和被动端口不中断
下面按 最稳妥、生产可用 的方式说明。
Debian 常用 FTP 服务:
先确认:
dpkg -l | grep -E "vsftpd|proftpd|pure-ftpd"
下面以 vsftpd + FTPS(显式/隐式) 为主说明,其他差异会标注。
cp -a /etc/vsftpd.conf /root/vsftpd.conf.bak
查看关键配置:
grep -E "ssl_enable|rsa_cert_file|rsa_private_key_file|pasv|local_root|chroot" /etc/vsftpd.conf
getent passwd > /root/users.bak
getent shadow > /root/shadow.bak
getent group > /root/group.bak
如果是 虚拟用户(PAM):
# 示例
ls /etc/vsftpd/virtual_users*
假设数据目录是 /srv/ftp 或 /home/ftp:
tar czvf ftpdata.tar.gz /srv/ftp
tar czvf ftps-cert.tar.gz \
/etc/ssl/certs/ftp.pem \
/etc/ssl/private/ftp.key
或你 vsftpd.conf 中指定的:
rsa_cert_file=/etc/ssl/certs/ftp.pem
rsa_private_key_file=/etc/ssl/private/ftp.key
apt update
apt install vsftpd -y
⚠ 不建议直接覆盖 /etc/passwd
推荐方式:
# 只同步 FTP 相关用户
grep ftp /root/users.bak >> /etc/passwd
grep ftp /root/shadow.bak >> /etc/shadow
grep ftp /root/group.bak >> /etc/group
或重新创建用户:
useradd -m -s /usr/sbin/nologin ftpuser
tar xzvf ftpdata.tar.gz -C /
chown -R ftpuser:ftpuser /srv/ftp
权限检查:
ls -ld /srv/ftp
tar xzvf ftps-cert.tar.gz -C /
chmod 600 /etc/ssl/private/ftp.key
cp /root/vsftpd.conf.bak /etc/vsftpd.conf
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/ftp.pem
rsa_private_key_file=/etc/ssl/private/ftp.key
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
⚠ 防火墙必须放行被动端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
ufw allow 21/tcp
ufw allow 30000:31000/tcp
systemctl restart vsftpd
systemctl enable vsftpd
ftp -p 127.0.0.1
或使用:
lftp -u ftpuser ftps://服务器IP
rsync -avz --delete /srv/ftp/ newserver:/srv/ftp/
告诉我:
我可以给你 对应专用迁移方案。