核心要点:FTP vs. SFTP
在开始之前,最重要的一点是:强烈建议您使用 SFTP 而不是 FTP。

-
FTP (File Transfer Protocol):
- 不安全:所有用户名、密码和传输的文件内容都是明文传输的,容易被网络中间人窃听。
- 端口:通常使用
21端口。
-
SFTP (SSH File Transfer Protocol):
- 安全:通过 SSH (Secure Shell) 加密通道进行传输,用户名、密码和文件内容都是加密的。
- 端口:通常使用
22端口。 - 功能:不仅仅是文件传输,还支持文件和目录的权限、所有者等高级操作。
除非您有特殊且安全的内网环境需求,否则请优先选择 SFTP,本指南将同时介绍 FTP 和 SFTP 的方法。
第一步:在 Linux 服务器上安装和配置 FTP 服务
在您尝试连接之前,请确保服务器上已经运行着 FTP 服务,这里以最常用的 vsftpd (Very Secure FTP Daemon) 为例。

安装 vsftpd
登录到您的 Linux 服务器(通过 SSH),然后执行以下命令:
# 对于 Debian/Ubuntu 系统 sudo apt update sudo apt install vsftpd # 对于 CentOS/RHEL/Fedora 系统 sudo yum install vsftpd
配置 vsftpd
编辑 vsftpd 的配置文件:
sudo nano /etc/vsftpd.conf
以下是几个关键的配置项,请根据您的需求修改:
anonymous_enable=NO:禁止匿名用户登录,这是基本的安全设置。local_enable=YES:允许本地系统用户登录。write_enable=YES:允许对文件系统进行写操作(上传、修改、删除)。chroot_local_user=YES:将用户限制在其主目录中,防止他们访问服务器上的其他文件。这是非常重要的安全措施!allow_writeable_chroot=YES:当chroot_local_user启用时,允许用户在其主目录内写入,注意:较新的vsftpd版本可能需要这个选项才能在 chroot 环境下上传文件。pasv_min_port=10000和pasv_max_port=10100:如果您的客户端和服务器之间有防火墙,设置一个被动模式的端口范围可以大大简化防火墙配置。
修改完成后,保存并关闭文件 (Ctrl+X, 然后按 Y, 最后按 Enter)。
创建 FTP 用户(可选但推荐)
出于安全考虑,最好为 FTP 创建一个专门的用户,而不是使用 root 或其他系统管理员账户。
# 创建一个名为 ftpuser 的新用户 sudo adduser ftpuser # 系统会提示您设置该用户的密码 # New password: [输入密码] # Retype new password: [再次输入密码] # [其他信息可以留空直接按回车]
这个用户的主目录(/home/ftpuser)就是他登录 FTP 后能看到的根目录。
启动并设置开机自启
# 启动 vsftpd 服务 sudo systemctl start vsftpd # 设置开机自启 sudo systemctl enable vsftpd
配置防火墙
确保防火墙允许 FTP 流量,FTP 比较特殊,它需要两个端口:控制端口(21)和数据端口(通常是 20 或被动模式的端口范围)。
# 对于使用 UFW (Ubuntu/Debian) 的防火墙 # 允许 FTP 流量 sudo ufw allow 21/tcp # 如果您使用了被动模式,还需要开放您设置的端口范围 sudo ufw allow 10000:10100/tcp # 对于使用 firewalld (CentOS/RHEL) 的防火墙 sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
测试服务器端配置
可以使用 netstat 或 ss 命令检查 21 端口是否在监听:
sudo ss -tulnp | grep 21
如果看到类似 LISTEN 0 5 *:21 *:* 的输出,说明 FTP 服务已经正常运行。
第二步:从客户端上传文件
现在服务器已经准备就绪,您可以从您的电脑(Windows, macOS, Linux)连接并上传文件了。
使用图形化 FTP 客户端(推荐)
这是最简单直观的方法,以 FileZilla 为例(支持 Windows, macOS, Linux)。
- 下载并安装 FileZilla: https://filezilla-project.org/
- 打开 FileZilla,在顶部快速连接栏填写信息:
- 主机: 您的服务器 IP 地址或域名 (
168.1.100或your-server.com) - 用户名: 您在服务器上创建的 FTP 用户名 (
ftpuser) - 密码: 该用户的密码
- 端口:
21(对于 FTP)
- 主机: 您的服务器 IP 地址或域名 (
- 点击 “快速连接”。
连接成功后,您会看到左右两个窗口:
- 左侧: 您本地电脑的文件和目录。
- 右侧: 服务器上的文件和目录(您被限制在
/home/ftpuser目录下)。
上传文件:
- 从左侧窗口找到您要上传的文件,直接拖拽到右侧窗口的相应目录。
- 或者,右键点击左侧的文件,选择 “上传”。
使用命令行 FTP 客户端
如果您习惯使用终端,可以使用 lftp 或 ftp 命令。
使用 lftp (功能更强大,推荐)
# 安装 lftp (如果未安装) # Ubuntu/Debian: sudo apt install lftp # CentOS/RHEL: sudo yum install lftp # 连接服务器 lftp ftpuser@your-server-ip # 连接后,会进入 lftp 命令行界面 # 查看本地文件 lcd /path/to/your/local/files # 查看服务器文件 ls # 进入服务器目标目录 cd /path/to/remote/directory # 上传单个文件 put your-local-file.txt # 上传整个目录(递归) mirror -R /path/to/local/dir /path/to/remote/dir # 退出 exit
使用原生 ftp 命令
# 连接服务器 ftp your-server-ip # 连接后,会提示输入用户名和密码 Name (ftp): ftpuser Password: [输入密码] # 登录后,进入 ftp 命令行界面 # 查看服务器文件 ls # 进入服务器目标目录 cd /path/to/remote/directory # 上传单个文件 put your-local-file.txt # 退出 bye
第三步:使用 SFTP(更安全的方式)
如前所述,SFTP 是更现代、更安全的选择,它通常和 SSH 服务一起打包(openssh-server)。
确保服务器 SSH 服务运行
大多数 Linux 服务器默认都安装并启用了 SSH 服务。
sudo systemctl status sshd # 或 ssh
如果未运行,请启动并启用它。
使用 SFTP 客户端上传
使用 FileZilla (只需更改协议)
- 在 FileZilla 顶部,将协议从 “FTP - 文件传输协议” 更改为 “SFTP - SSH 文件传输协议”。
- 填写信息:
- 主机: 您的服务器 IP 地址或域名
- 用户名: 您的 SSH 用户名 (可以是
ftpuser或其他有权限的用户) - 密码: 该用户的密码
- 端口:
22
- 点击 “快速连接”。
使用命令行 sftp
# 连接服务器 sftp ftpuser@your-server-ip # 连接后,会进入 sftp 命令行界面 # 查看本地文件 lcd /path/to/your/local/files # 查看服务器文件 ls # 进入服务器目标目录 cd /path/to/remote/directory # 上传单个文件 put your-local-file.txt # 上传整个目录 put -r /path/to/local/dir # 下载文件 (get) get remote-file.txt # 退出 exit
