第一步:理解什么是 FTP 以及它的工作原理
在开始之前,我们先简单了解一下 FTP。

- FTP (File Transfer Protocol):文件传输协议,是一种用于在客户端(你的电脑)和服务器(存放你网站文件的地方)之间进行文件传输的标准网络协议。
- 工作原理:你需要一个 FTP 客户端软件(如 FileZilla, Cyberduck 等)来连接到你的网站服务器,连接成功后,你就可以像在电脑上操作文件一样,上传、下载、删除、修改服务器上的网站文件。
重要提示:现代趋势 虽然 FTP 非常经典,但它有一个严重的安全隐患:用户名和密码是明文传输的,容易被黑客截获,现在更推荐使用它的安全版本——SFTP (SSH File Transfer Protocol) 或 FTPS (FTP over SSL/TLS)。
- SFTP:通过 SSH(安全外壳协议)通道进行文件传输,是目前最主流、最安全的选择,大多数现代虚拟主机或云服务器都默认支持 SFTP。
- FTPS:在 FTP 的基础上增加了 SSL/TLS 加密层,也非常安全。
本教程将以最安全的 SFTP 为核心进行讲解,但也会提及传统 FTP 的设置。
**第二步:准备工作(你需要准备什么?)
在开始配置之前,请确保你拥有以下信息:
-
一台网站服务器:这可以是:
(图片来源网络,侵删)- 虚拟主机/共享主机:最常见的选择,适合个人博客和小型网站,你的主机商会为你管理大部分底层设置。
- 云服务器/VPS (Virtual Private Server):如阿里云、腾讯云、AWS、DigitalOcean 等,你需要自己管理服务器,灵活性更高,但技术要求也更高。
- 自己搭建的服务器:如果你有技术能力,可以在自己的电脑或物理机上搭建。
-
FTP 服务器地址:这是你服务器的网络地址,通常是你的域名(如
ftp.yourdomain.com)或服务器的 IP 地址(如168.1.100)。 -
FTP 用户名:用于登录的用户名,有时就是你的 cPanel/Plesk 控制面板的用户名,或者是你专门为 FTP 创建的用户名。
-
FTP 密码:与用户名对应的密码。
-
FTP 端口号:
(图片来源网络,侵删)- 传统 FTP:默认端口是
21。 - SFTP (推荐):默认端口是
22。 - FTPS:默认端口是
990。
- 传统 FTP:默认端口是
-
一个 FTP 客户端软件:推荐使用免费的 FileZilla,它支持 FTP、SFTP 和 FTPS,并且跨平台(Windows, macOS, Linux)。
第三步:配置 FTP(分场景详解)
配置 FTP 的方法取决于你使用的是哪种类型的网站服务器。
使用虚拟主机/共享主机(最简单)
对于大多数新手来说,这是最常见的情况,你的主机商已经为你搭建好了 FTP 服务器,你只需要在主机控制面板中创建一个 FTP 账户即可。
以 cPanel 控制面板为例(最常见):
- 登录你的 cPanel:通过你的主机商提供的链接和账户密码登录。
- 找到 FTP 账户管理:在 cPanel 首页,找到并点击 "FTP Accounts" (FTP 账户) 图标。
- 创建新账户:
- Login: 输入你想要的 FTP 用户名(
yourname),系统会自动在后面加上你的域名,形成完整的登录名yourname@yourdomain.com。 - Password: 输入一个强密码,或者使用密码生成器。
- Directory (可选): 你可以指定该账户只能访问哪个文件夹,如果你想让它只能访问
/public_html/wp-content/uploads/文件夹,就在这里输入public_html/wp-content/uploads/,留空则默认拥有对/public_html/(网站根目录)的访问权限。 - Quota (磁盘配额): 设置该 FTP 账户可以使用的最大磁盘空间,通常设置为 "Unlimited" 即可。
- Login: 输入你想要的 FTP 用户名(
- 点击 "Create FTP Account"。
- 记录信息:创建成功后,页面会显示你的 FTP 连接信息。请务必记下以下信息:
- FTP Server Host:
ftp.yourdomain.com或yourdomain.com - FTP Username:
yourname@yourdomain.com - FTP Password: 你设置的密码
- Port:
21(FTP) 或22(SFTP)
- FTP Server Host:
其他控制面板:
- Plesk:路径通常是
订阅 > 网站 > FTP 访问 > 添加 FTP 用户。 - DirectAdmin:路径通常是
用户管理 > FTP 账户管理。
使用云服务器/VPS(如 Linux + Nginx/Apache)
这种情况下,你需要自己安装和配置 FTP 服务器,我们以在 Ubuntu/Debian 系统上安装 vsftpd (Very Secure FTP Daemon) 为例。
-
连接到你的服务器:使用 SSH 客户端(如 PuTTY, Terminal 或 Xshell)登录到你的服务器。
ssh root@your_server_ip
-
更新系统包:
sudo apt update && sudo apt upgrade -y
-
安装 vsftpd:
sudo apt install vsftpd -y
-
配置 vsftpd:这是最关键的一步,打开配置文件。
sudo nano /etc/vsftpd.conf
找到并修改/取消注释以下几行(使用 注释掉不想要的行):
# 允许匿名登录?不允许,所以注释掉或设为 NO anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 允许写入操作(上传、修改、删除文件) write_enable=YES # 用户被限制在自己的主目录下,不能“越狱”到其他文件夹 chroot_local_user=YES # 启用用户列表,并只允许列表中的用户登录 userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
按
Ctrl + X,然后按Y,再按Enter保存并退出。 -
创建 FTP 用户: 我们建议为 FTP 创建一个专门的、非 root 的用户。
# 创建一个名为 ftpuser 的新用户,并设置密码 sudo adduser ftpuser # 根据提示设置密码和用户信息
-
将用户添加到允许列表: 打开 vsftpd 用户列表文件,将你刚才创建的用户名
ftpuser添加进去。sudo nano /etc/vsftpd.userlist
在文件中输入
ftpuser,然后保存退出。 -
为 FTP 用户创建网站目录: 为了安全,我们最好为 FTP 用户创建一个专门存放网站文件的目录,并将其所有权分配给该用户。
# 创建网站目录,/home/ftpuser/website sudo mkdir -p /home/ftpuser/website # 将目录所有权分配给 ftpuser 用户 sudo chown -R ftpuser:ftpuser /home/ftpuser/website # 设置正确的权限 sudo chmod -R 755 /home/ftpuser/website
-
重启 vsftpd 服务:让配置生效。
sudo systemctl restart vsftpd sudo systemctl enable vsftpd # (可选) 设置开机自启
-
配置防火墙:确保 FTP/SFTP 端口是开放的。
# 开放 SSH (22) 和 FTP (21) 端口 sudo ufw allow 22 sudo ufw allow 21 # 如果你想使用 SFTP (通过 SSH),只需要开放 22 端口即可 sudo ufw allow 22/tcp # 重新加载防火墙规则 sudo ufw reload
配置完成! 现在你有了 FTP 服务器地址 (your_server_ip),用户名 (ftpuser),密码,以及端口(21 for FTP, 22 for SFTP)。
第四步:使用 FTP 客户端连接网站
我们使用 FileZilla 来连接。
-
下载并安装 FileZilla:从 FileZilla 官网 下载并安装。
-
填写连接信息:
- 主机:你在第三步中获取的 FTP 服务器地址(如
ftp.yourdomain.com或168.1.100)。 - 用户名:你的 FTP 用户名(如
yourname@yourdomain.com或ftpuser)。 - 密码:你的 FTP 密码。
- 端口:
21(FTP) 或22(SFTP)。
- 主机:你在第三步中获取的 FTP 服务器地址(如
-
快速连接:点击 “快速连接” 按钮。
-
成功连接:如果一切正确,FileZilla 会成功连接到服务器。
-
左侧:是你本地电脑的文件。
-
右侧:是服务器上的文件。
-
网站根目录:对于虚拟主机,网站文件通常在
public_html或www目录下,对于你自己的服务器,可能是在/home/ftpuser/website或/var/www/html目录下。
-
-
开始传输文件:
- 上传:从左侧拖动文件到右侧。
- 下载:从右侧拖动文件到左侧。
常见问题与排查
-
连接被拒绝 / 无法连接:
- 检查主机、用户名、密码、端口是否正确。
- 确认服务器防火墙(如
ufw,iptables)是否放行了 FTP/SFTP 端口。 - 确认 FTP 服务器服务是否正在运行 (
sudo systemctl status vsftpd)。 - 如果你使用的是云服务商(如阿里云),检查其安全组设置,是否放行了相应端口。
-
550 Permission denied (权限被拒绝):
- 这是最常见的问题,意味着你的 FTP 账户没有权限操作该文件或目录。
- 虚拟主机:检查你在 cPanel 中设置的 Directory 是否正确。
- 自己搭建的服务器:检查文件的所有者和权限,你可以使用
chown和chmod命令来修改,将public_html目录的所有者设为www-data(Web 服务器用户):sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html
-
上传文件后网站无法访问 / 文件丢失:
- 检查你是否上传到了正确的目录(通常是
public_html)。 - 检查文件权限是否正确,Web 服务器(如 Nginx, Apache)需要读取文件的权限。
- 检查文件名是否大小写敏感(Linux 系统是敏感的)。
- 检查你是否上传到了正确的目录(通常是
-
速度很慢:
- 尝试切换到 SFTP 连接,它通常比 FTP 更稳定。
- 检查本地网络和服务器网络是否拥堵。
给网站配置 FTP 的核心流程是: 获取服务器信息 → 在服务器上/控制面板中创建 FTP 账户 → 使用客户端软件连接并传输文件。
强烈建议你优先使用 SFTP,因为它更安全。 如果你只是管理一个虚拟主机,通常只需要在 cPanel 里点击几下就能完成配置,非常简单,如果你自己管理服务器,则需要手动安装和配置服务,但灵活性也更高。
