返回博客
五月 23, 2026指南

如何设置 SFTP 安全文件传输

使用 OpenSSH 进行 SFTP 上传:创建用户、chroot,并用 FileZilla 或 WinSCP 连接。

如何设置 SFTP 安全文件传输

SFTP(SSH 文件传输协议)无需单独 FTP 守护进程即可加密上传下载。Linux VPS 上 SFTP 内置于 OpenSSH——本指南介绍在 Hiddence 服务器上的安全设置。

专用用户 SFTP

创建仅用于上传的用户:

bash
sudo adduser sftpuser
sudo passwd sftpuser

# Test SFTP from client:
sftp sftpuser@YOUR_VPS_IP

# Or use FileZilla: Protocol SFTP, port 22

Chroot 监狱(推荐)

为安全将用户限制在单一目录:

bash
sudo mkdir -p /var/sftp/sftpuser/upload
sudo chown root:root /var/sftp/sftpuser
sudo chmod 755 /var/sftp/sftpuser
sudo chown sftpuser:sftpuser /var/sftp/sftpuser/upload

sudo nano /etc/ssh/sshd_config

# Add at end:
Match User sftpuser
    ChrootDirectory /var/sftp/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

sudo systemctl restart sshd

从桌面连接

常用客户端均支持 SFTP:

  • FileZilla — Host: sftp://YOUR_VPS_IP, Port: 22, Logon Type: Normal
  • WinSCP — Protocol: SFTP
  • macOS Finder — Connect to Server: sftp://user@IP
  • Linux: sftp user@IP or scp file user@IP:/path/
  • VS Code — Remote SSH extension for direct editing

安全检查清单

  • 尽可能对 SFTP 用户使用 SSH 密钥而非密码
  • 切勿向第三方共享 root SFTP
  • 在 sshd_config 中禁用 root 密码登录
  • 纯上传账户使用 chroot
  • SSH 端口配合 Fail2ban
  • 若可行,防火墙仅对可信 IP 开放 22 端口

提示

  • SFTP 不是 FTP——除非需要旧版 FTP,否则勿开放 21 端口
  • WordPress 建议使用 SSH 密钥 + sftp 或部署工具
  • 大规模迁移 SSH 上 rsync 更快
  • 上传失败时检查权限(目录 755,文件 644)
  • 修改 sshd_config 后,关闭会话前务必在另一会话测试 SSH