温馨提示×

如何ubuntu配置sftp服务器

小樊
35
2026-10-05 06:26:05
栏目: 云计算

在 Ubuntu 上配置 SFTP 服务器(基于 OpenSSH)通常不需要额外安装软件,只需正确配置 SSH 即可。下面是从零开始的完整步骤。


一、确认 OpenSSH 已安装

大多数 Ubuntu 已默认安装:

sudo apt update
sudo apt install openssh-server

检查服务状态:

sudo systemctl status ssh

二、创建 SFTP 用户和目录

1. 创建用户

sudo adduser sftpuser

2. 创建 SFTP 根目录(重要)

SFTP 目录必须 属于 root,且其他用户不可写:

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

3. 创建可写子目录

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

三、配置 SSH(关键)

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

1. 注释或确认以下行

# Subsystem sftp /usr/lib/openssh/sftp-server

2. 添加 SFTP 专用配置(放在文件末尾)

Subsystem sftp internal-sftp

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

如果是多个用户,可用 Match Group sftp


四、重启 SSH 服务

sudo systemctl restart ssh

五、测试 SFTP 连接

从本地或远程:

sftp sftpuser@服务器IP

登录后:

cd upload
put test.txt

六、常见问题排查

❌ 登录后立即断开

原因:

  • Chroot 目录不是 root 拥有
  • 目录权限不是 755

检查:

ls -ld /sftp/sftpuser

❌ 无法上传文件

确认上传目录:

ls -ld /sftp/sftpuser/upload

必须是 sftpuser 可写


七、可选增强(进阶)

  • 禁用 shell 登录:
sudo usermod -s /usr/sbin/nologin sftpuser
  • 使用 SSH 密钥登录
  • 配置防火墙:
sudo ufw allow ssh

如果你需要:

  • 多用户 SFTP
  • 只读 / 只写权限
  • Docker 方式部署
  • 图形化工具(FileZilla)

可以告诉我你的具体使用场景。

0 踩