命令行 ftp服务器
- 云服务器
- 2025-12-28
- 6
命令行 FTP 服务器是一种通过文本界面实现的文件传输协议服务,用户可通过命令行工具连接、上传、下载和管理文件,适用于服务器管理、自动化脚本等场景,其核心优势在于轻量级、资源占用低,且可通过命令行参数灵活配置,以下从搭建、配置、使用及安全防护等方面详细说明。
搭建命令行 FTP 服务器
以 Linux 系统为例,常用 FTP 服务器软件有 vsftpd(Very Secure FTP Daemon)、ProFTPD 等,vsftpd 因安全性高、配置简单而被广泛使用。
安装 vsftpd
以 Ubuntu/Debian 系统为例,执行以下命令安装:
sudo apt update sudo apt install vsftpd y
安装完成后,服务会自动启动,可通过 systemctl status vsftpd 检查状态。
初始配置
vsftpd 的主配置文件为 /etc/vsftpd.conf,默认配置已满足基础需求,但需根据实际场景调整关键参数:

- anonymous_enable=NO:禁止匿名访问,提升安全性;
- local_enable=YES:允许本地用户登录;
- write_enable=YES:允许用户上传文件;
- chroot_local_user=YES:限制用户仅能访问自家目录(防止越权);
- pasv_min_port=10000、pasv_max_port=10100:设置被动模式端口范围,避免防火墙拦截。
修改配置后,需重启服务使生效:
sudo systemctl restart vsftpd
用户与权限管理
创建 FTP 专用用户
为安全起见,建议创建独立用户,禁止其登录系统shell,例如创建用户 ftpuser,家目录为 /home/ftpuser:
sudo useradd m d /home/ftpuser s /sbin/nologin ftpuser sudo passwd ftpuser # 设置用户密码
若需允许用户上传文件,需确保家目录权限正确(所有者为用户,组为用户组):
配置用户访问目录
通过 chroot 限制用户访问范围,避免其跳出家目录,若需允许用户访问特定共享目录(如 /var/ftp/share),可创建符号链接:
sudo ln s /var/ftp/share /home/ftpuser/share
客户端连接与操作
命令行连接工具
Linux/macOS 系统内置 ftp 命令,Windows 可通过 PowerShell 或第三方工具(如 WinSCP)连接,基础连接命令:
ftp ftp服务器IP地址
输入用户名和密码后,进入 FTP 交互界面,常用命令如下:
| 命令 | 功能说明 | 示例 |
|---|---|---|
| ls | 列出当前目录文件 | ls |
| cd 目录名 | 切换目录 | cd documents |
| get 文件名 | 下载文件到本地 | get test.txt |
| put 文件名 | 上传本地文件到服务器 | put local_file.txt |
| mkdir 目录名 | 创建新目录 | mkdir new_folder |
| delete 文件名 | 删除服务器文件 | delete old_file.txt |
| bye | 退出 FTP 连接 | bye |
被动模式配置
若客户端位于防火墙后,需启用被动模式(PASV),在 vsftpd 配置中确保 pasv_enable=YES,并开放端口范围(如 1000010100),防火墙规则示例(Ubuntu):

sudo ufw allow 10000:10100/tcp
安全防护措施
限制登录用户
通过 /etc/vsftpd.user_list 或 /etc/vsftpd/chroot_list 控制允许登录的用户,编辑 /etc/vsftpd.user_list,添加用户名(每行一个),并配置 userlist_enable=YES 和 userlist_file=/etc/vsftpd.user_list,userlist_deny=NO(仅允许列表中用户登录)。
启用 SSL/TLS 加密
为防止数据明文传输,可配置 FTPS(FTP over SSL),生成 SSL 证书:
sudo openssl req x509 nodes days 365 newkey rsa:2048 keyout /etc/vsftpd/vsftpd.pem out /etc/vsftpd/vsftpd.pem
修改配置文件,启用 SSL:
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1_2=YES ssl_cert_file=/etc/vsftpd/vsftpd.pem
禁用匿名访问与危险命令
确保 anonymous_enable=NO,并通过 cmds_denied=chmod,chown,rm 禁用部分危险命令,避免误操作或恶意破坏。
常见问题排查
- 问题1:连接提示 “530 Login incorrect”
解答:检查用户名、密码是否正确,确认 /etc/shadow 中用户未被锁定(如 passwd S ftpuser 查看状态),或确认 chroot 配置导致权限问题。
- 问题2:被动模式连接超时
解答:检查服务器防火墙是否开放 pasv_min_port 和 pasv_max_port 指定的端口范围,确认客户端是否允许被动模式连接(部分 FTP 客户端需手动勾选)。
FAQs
Q1: 如何禁止 FTP 用户删除文件?
A1:可通过 vsftpd 配置文件中的 write_enable=NO 全局禁止上传/删除,或针对特定用户设置目录权限(如 chmod 555 /home/ftpuser),可使用 cmds_denied=DELE 禁用 delete 命令。
Q2: FTP 服务器如何支持断点续传?
A2:vsftpd 默认支持断点续传,无需额外配置,客户端在下载/上传中断后,重新执行相同命令即可自动续传,若需强制续传,客户端可使用 reget(下载)或 reput(上传)命令。
