温馨提示×

怎样用ubuntu搭sftp服务器

小樊
45
2026-10-22 20:22:55
栏目: 云计算

在 Ubuntu 上搭建 SFTP 服务器(基于 OpenSSH,安全且常用)通常步骤如下。下面以 Ubuntu 20.04 / 22.04 / 24.04 为例。


一、准备工作

  1. 一台 Ubuntu 服务器
  2. 有 sudo 权限的用户
  3. 已安装 OpenSSH(一般默认已装)

检查 SSH 是否安装:

sudo apt update
sudo apt install openssh-server

二、创建 SFTP 用户和目录(推荐方式:限制用户只能 SFTP)

1. 创建用户

sudo adduser sftpuser

(按提示设置密码)

2. 创建 SFTP 根目录

sudo mkdir -p /srv/sftp/sftpuser
sudo chown root:root /srv/sftp
sudo chown root:root /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp/sftpuser

⚠️ 注意:SFTP 根目录必须属主为 root,否则登录会失败

3. 创建可写目录(用户实际可上传的地方)

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

三、配置 SSH 限制 SFTP 用户

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

Match User sftpuser
    ChrootDirectory /srv/sftp/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    PasswordAuthentication yes

保存后退出,重启 SSH:

sudo systemctl restart ssh

四、测试 SFTP 登录

从本地或其他机器:

sftp sftpuser@服务器IP

成功示例:

sftp> ls
upload
sftp> put test.txt upload/

五、多用户 SFTP(可选)

方法一:每个用户一个 Chroot

重复上述步骤,为每个用户建目录

方法二:用户组统一管理

sudo groupadd sftpusers

sshd_config 中:

Match Group sftpusers
    ChrootDirectory /srv/sftp/%u
    ForceCommand internal-sftp

六、常见问题

1. 登录失败:broken pipe

原因:Chroot 目录不是 root 拥有
解决:

sudo chown root:root /srv/sftp/sftpuser

2. 无法上传文件

确保上传目录属主是用户:

sudo chown sftpuser:sftpuser /srv/sftp/sftpuser/upload

3. 只能用 SFTP,不能用 SSH

上面配置已经禁止 SSH shell


七、进阶(可选)

  • 使用 SSH 密钥登录
  • 配置 防火墙(ufw)
  • 使用 logrotate 记录 SFTP 日志
  • 使用 Fail2Ban 防爆破

如果你需要: ✅ 图形化管理
✅ Docker 版 SFTP
✅ 仅只读 SFTP
✅ 公网 + 域名访问

可以继续问我。

0 踩