Ubuntu 上 vsftpd 与 OpenSSH 的集成与替代方案
一、方案总览与端口对照
二、并行部署 vsftpd 与 OpenSSH(同一主机双服务)
sudo apt install vsftpd openssh-serversudo systemctl start vsftpd ssh && sudo systemctl enable vsftpd ssh/etc/vsftpd.conf:
anonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YESallow_writeable_chroot=YESsudo ufw allow 20/tcpsudo ufw allow 21/tcpsudo ufw allow 22/tcpsudo ufw status三、使用 OpenSSH 的 SFTP 替代 FTP(推荐更安全的做法)
/etc/ssh/sshd_config,确保有:Subsystem sftp internal-sftpsudo useradd -d /home/sftpuser -s /usr/sbin/nologin sftpuser && sudo passwd sftpuser/usr/sbin/nologin 在 /etc/shells 中,否则 SFTP 登录会被拒绝sudo mkdir -p /srv/sftp/sftpuser/uploadsudo chown root:root /srv/sftp /srv/sftp/sftpusersudo chown sftpuser:sftpuser /srv/sftp/sftpuser/upload/etc/ssh/sshd_config 末尾添加匹配规则:
Match User sftpuser
X11Forwarding noAllowTcpForwarding noForceCommand internal-sftpChrootDirectory /srv/sftp/sftpusersudo systemctl restart ssh四、安全与常见问题处理
安全建议
ssl_enable=YES、rsa_cert_file=...、rsa_private_key_file=...,生产环境请使用有效证书替换默认 snakeoil 证书。allow_writeable_chroot=YES(vsftpd)或按 SFTP 的目录权限模型设置(上级目录属 root 且不可写)。常见问题速查
/etc/passwd 的 shell 是否为 /usr/sbin/nologin 且已加入 /etc/shells;检查 ChrootDirectory 上级目录属主与权限。local_enable=YES、write_enable=YES、chroot_local_user=YES,必要时设置 allow_writeable_chroot=YES。systemctl status vsftpd ssh)、防火墙已放行 20/21/22/TCP,以及客户端使用正确协议与端口。