Ubuntu FTPServer如何进行文件传输
小樊
34
2025-12-21 05:27:46
Ubuntu FTP 服务器进行文件传输
一、准备与安装
- 安装 vsftpd(Very Secure FTP Daemon):sudo apt update && sudo apt install vsftpd
- 启动并设置开机自启:sudo systemctl start vsftpd && sudo systemctl enable vsftpd
- 备份默认配置:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- 获取服务器地址:在 Ubuntu 上执行 ifconfig(或 ip a)查看 IPv4 地址,供客户端连接使用。
二、基础配置与权限要点
- 编辑配置文件:sudo nano /etc/vsftpd.conf,常用关键项:
- 禁用匿名、启用本地用户与写入:anonymous_enable=NO;local_enable=YES;write_enable=YES
- 将本地用户限制在其主目录:chroot_local_user=YES
- 如启用 chroot 列表:chroot_list_enable=YES;chroot_list_file=/etc/vsftpd.chroot_list
- 若启用 chroot 后出现“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”,在配置中增加:allow_writeable_chroot=YES
- 如需自定义登录后根目录:local_root=/home/用户名(或指定共享目录)
- 使配置生效:sudo systemctl restart vsftpd
- 目录权限建议:确保 FTP 根目录对相应用户具备读写执行权限(如 chmod 755/775 结合所属用户/组设置),避免因权限不足导致上传失败。
三、客户端连接与传输
- 图形化客户端(推荐 FileZilla)
- 站点管理器新建站点:主机填服务器 IP;端口 21;加密选择“只使用明文 FTP(不加密)”或“要求显式 FTP over TLS”(若服务器已配置 TLS);登录类型“正常”,填入 用户名/密码
- 连接后即可在左右面板间拖拽进行上传/下载
- 命令行 FTP
- 连接:ftp 服务器IP
- 登录后常用命令:put 本地文件(上传)、get 远程文件(下载)、mput/mget(批量)、ls(列目录)、cd(切换目录)、quit(退出)
- 浏览器或文件管理器
- 地址栏输入:ftp://服务器IP,按提示输入用户名和密码即可进行上传/下载(适合简单场景)。
四、加密传输与防火墙要点
- 启用 SSL/TLS(推荐)
- 生成证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- vsftpd.conf 增加:ssl_enable=YES;rsa_cert_file=/etc/ssl/private/vsftpd.pem;rsa_private_key_file=/etc/ssl/private/vsftpd.pem;force_local_data_ssl=YES;force_local_logins_ssl=YES;ssl_tlsv1=YES;ssl_sslv2=NO;ssl_sslv3=NO
- 重启服务:sudo systemctl restart vsftpd;客户端选择“显式 FTP over TLS”连接
- 防火墙与被动模式端口
- 放行控制端口:sudo ufw allow 21/tcp
- 放行被动模式数据端口范围(示例):sudo ufw allow 50000:60000/tcp
- 在 vsftpd.conf 中设置被动端口范围:pasv_enable=YES;pasv_min_port=50000;pasv_max_port=60000(如部署在 NAT/云环境,可设置 pasv_address=公网IP)。
五、常见问题快速排查
- 登录即断开或“500 OOPS: could not read chroot() list file”
- 确认已创建名单文件:sudo touch /etc/vsftpd.chroot_list;必要时在 chroot_list_enable=YES 时写入允许例外用户
- “500 OOPS: vsftpd: refusing to run with writable root inside chroot()”
- 在 vsftpd.conf 增加:allow_writeable_chroot=YES 并重启服务
- 能连不能传
- 检查 write_enable=YES;目标目录对登录用户具备写权限;SELinux/AppArmor 未拦截(如启用需相应策略放行)
- 被动模式连接超时
- 确认防火墙放行配置的 pasv_min_port~pasv_max_port;云服务器安全组同样需放行;必要时设置 pasv_address 指向服务器公网地址。