温馨提示×

Debian FTPServer怎么迁移

小樊
44
2026-08-21 17:35:17
栏目: 智能运维

迁移 Debian 上的 FTPServer(通常指 vsftpd + SSL/TLS) 时,核心目标是:
用户、权限、配置保持一致
数据完整迁移
证书和被动端口不中断

下面按 最稳妥、生产可用 的方式说明。


一、确认当前 FTPServer 类型

Debian 常用 FTP 服务:

  • vsftpd(最常见,支持 FTPS)
  • proftpd
  • pure-ftpd

先确认:

dpkg -l | grep -E "vsftpd|proftpd|pure-ftpd"

下面以 vsftpd + FTPS(显式/隐式) 为主说明,其他差异会标注。


二、迁移前准备(老服务器)

1️⃣ 记录当前配置

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

2️⃣ 备份用户和权限

本地用户(最常见)

getent passwd > /root/users.bak
getent shadow > /root/shadow.bak
getent group  > /root/group.bak

如果是 虚拟用户(PAM)

# 示例
ls /etc/vsftpd/virtual_users*

3️⃣ 备份 FTP 数据目录

假设数据目录是 /srv/ftp/home/ftp

tar czvf ftpdata.tar.gz /srv/ftp

4️⃣ 备份 SSL 证书(FTPS 关键)

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

三、新服务器安装 FTPServer

1️⃣ 安装 vsftpd

apt update
apt install vsftpd -y

2️⃣ 同步用户(本地用户模式)

不建议直接覆盖 /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

3️⃣ 恢复 FTP 数据

tar xzvf ftpdata.tar.gz -C /
chown -R ftpuser:ftpuser /srv/ftp

权限检查:

ls -ld /srv/ftp

4️⃣ 恢复 FTPS 证书

tar xzvf ftps-cert.tar.gz -C /
chmod 600 /etc/ssl/private/ftp.key

四、恢复 vsftpd 配置

1️⃣ 覆盖配置

cp /root/vsftpd.conf.bak /etc/vsftpd.conf

2️⃣ 关键检查项

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

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

ufw

ufw allow 21/tcp
ufw allow 30000:31000/tcp

六、启动并验证

systemctl restart vsftpd
systemctl enable vsftpd

测试 FTPS

ftp -p 127.0.0.1

或使用:

  • FileZilla(显式 FTP over TLS)
  • lftp
lftp -u ftpuser ftps://服务器IP

七、无缝切换(生产环境建议)

✅ 切换方式

  1. 新服务器先跑起来
  2. 老服务器 只读模式
  3. 最后一次增量同步:
rsync -avz --delete /srv/ftp/ newserver:/srv/ftp/
  1. 修改 DNS / 客户端 IP

八、常见问题

❌ 530 Login incorrect

  • PAM 配置未迁移
  • 用户被 nologin 拒绝

❌ TLS 握手失败

  • 证书路径错误
  • key 权限不是 600

❌ 被动模式连不上

  • 防火墙/安全组未放行被动端口

九、如果你用的是 ProFTPD / Pure-FTPD

告诉我:

  • ✅ FTP 软件
  • ✅ 本地用户 or 虚拟用户
  • ✅ 是否使用 FTPS(SSL)

我可以给你 对应专用迁移方案

0