温馨提示×

如何在Ubuntu上配置SFTP

小樊
58
2026-07-06 09:35:26
栏目: 智能运维

在 Ubuntu 上配置 SFTP(SSH File Transfer Protocol) 通常基于 OpenSSH,不需要额外安装 FTP 服务器。下面是从 最常用、最安全 的方式一步步说明。


一、确认 OpenSSH 已安装

大多数 Ubuntu 已默认安装,若未安装:

sudo apt update
sudo apt install openssh-server

检查状态:

sudo systemctl status ssh

如未启动:

sudo systemctl enable ssh
sudo systemctl start ssh

二、创建 SFTP 用户(推荐方式)

1️⃣ 创建用户

sudo adduser sftpuser

(可设置密码)


2️⃣ 创建 SFTP 专用目录

sudo mkdir -p /data/sftp
sudo chown root:root /data/sftp
sudo chmod 755 /data/sftp

⚠️ SFTP 根目录必须属于 root,且其他用户不能写入


3️⃣ 创建用户可写目录

sudo mkdir /data/sftp/upload
sudo chown sftpuser:sftpuser /data/sftp/upload

三、配置 SFTP(限制用户仅 SFTP)

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

# SFTP 配置
Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

保存后测试配置:

sudo sshd -t

重启 SSH:

sudo systemctl restart ssh

四、测试 SFTP 连接

本地测试

sftp sftpuser@localhost

远程连接

sftp sftpuser@服务器IP

五、使用 FileZilla / WinSCP 连接

  • 协议:SFTP
  • 主机:服务器 IP
  • 端口:22
  • 用户名 / 密码:sftpuser

六、常见问题排查

❌ 登录失败 / 无法 chroot

原因通常是:

  • ChrootDirectory 不是 root 所有
  • ChrootDirectory 权限不是 755

✅ 正确示例:

ls -ld /data/sftp
# drwxr-xr-x root root

❌ 无法上传文件

  • 用户只能上传到 upload 目录
  • 根目录不可写

七、可选:禁止 SFTP 用户 SSH 登录

sudo usermod -s /usr/sbin/nologin sftpuser

八、安全建议(生产环境)

✅ 禁用 root 登录
✅ 使用密钥认证
✅ 修改默认 SSH 端口
✅ 使用防火墙(ufw)


如果你需要:

  • 多用户 SFTP
  • 仅允许特定 IP
  • SFTP + 公钥认证
  • Docker / 云服务器配置

可以直接告诉我你的使用场景,我可以给你定制方案。

0