通过 SFTP 传输文件
如何通过 WinSCP、FileZilla、内置 sftp 客户端和 macOS Finder 从服务器上传和下载文件,而不把 SFTP 与普通 FTP 混淆。
更新于 2026年8月23日
SFTP 是通过同一条 SSH 连接进行的文件传输。您无需单独搭建服务器:只要 ssh 能用,SFTP 就能用。
在图形化客户端中连接
WinSCP、FileZilla 和 Cyberduck 的设置相同:
| 字段 | 值 |
|---|---|
| 协议 | SFTP(不是 FTP,也不是 FTPS) |
| 主机 | “概览”标签页中的机器地址 |
| 端口 | 22 |
| 用户 | root 或您自己的用户 |
| 密码 | “访问”标签页中的 root 密码 |
| 密钥 | 私钥路径,如果已禁用密码登录 |
WinSCP 只接受 .ppk 格式的密钥——转换方法在 PuTTY 一文中有所介绍。FileZilla 也能读取普通的 OpenSSH 密钥。
端口 21 和“明文 FTP”在机器上无法使用,您也无需配置它们:FTP 会以明文发送密码。请始终选择 SFTP。
命令行客户端
Windows、macOS 和 Linux 均内置:
sftp root@203.0.113.10
在其中有简单的命令可用:
ls
cd /var/www
lcd C:\work
put index.html
put -r ./site
get /var/log/nginx/error.log
bye
put 将文件发送到机器,get 将文件拉取到您的电脑,而以 l 开头的命令(lcd、lls)则操作您自己的电脑。
如果您已配置 ~/.ssh/config 文件,那么 sftp vds 就足够了。
在文件管理器中连接 macOS 和 Linux
在 Finder 中:前往 → 连接服务器 → sftp://root@203.0.113.10。在 GNOME 文件 中,在“其他位置”字段中输入地址。机器的目录会作为网络文件夹打开。
对于长期工作,将目录挂载为本地目录更为方便:
sshfs root@203.0.113.10:/var/www /mnt/vds
文件放在哪里
| 内容 | 位置 |
|---|---|
| 网站 | /var/www/<domain> |
| 应用程序或机器人 | /opt/<name> |
| 个人文件 | 用户的主目录 |
| 临时文件 | /tmp(重启时清空) |
上传后,通常需要设置所有者,否则 Web 服务器会收到 403:
chown -R www-data:www-data /var/www/example.com
chmod -R 755 /var/www/example.com
常见错误
| 现象 | 原因 |
|---|---|
写入时出现 Permission denied | 目录属于其他用户,而您没有以 root 身份登录 |
| 客户端无法连接,但 SSH 正常 | 设置中选择了 FTP 而不是 SFTP,或者端口是 21 |
| 上传成功,但网站看不到文件 | 目录错误,或者未设置所有者 |
| 大文件传输中断 | 在客户端中启用 keepalive;对于大文件上传请使用 rsync——它可以断点续传 |
| 俄语文件名乱码 | 在客户端设置中启用 UTF-8 编码 |
何时 SFTP 不是最佳选择
对于数百个小文件和重复部署,rsync 更快:它只传输更改的部分。对于单个文件,scp 更简单。这两条命令都在 scp 和 rsync 一文中有所介绍。