温馨提示×

如何配置debian sftp服务

小樊
47
2026-10-03 15:44:51
栏目: 智能运维

下面以 Debian 11/12 为例,说明如何配置 SFTP 服务(基于 OpenSSH)。SFTP 通常由 SSH 自带,不需要额外安装 FTP 服务。


一、安装 OpenSSH Server

大多数 Debian 已默认安装:

sudo apt update
sudo apt install openssh-server

确认服务状态:

sudo systemctl status ssh

二、创建 SFTP 用户和目录

1. 创建用户

sudo adduser sftpuser

2. 创建 SFTP 根目录(推荐做法)

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

⚠️ 注意:

  • SFTP 根目录(chroot 目录)必须属于 root
  • 用户真正可写目录放在其子目录中

三、配置 SSH 限制 SFTP(chroot)

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

1. 注释或确认以下行

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

改为:

Subsystem sftp internal-sftp

2. 添加 SFTP 用户限制

在文件末尾添加:

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

如果你想限制一组用户:

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

四、重启 SSH 服务

sudo systemctl restart ssh

五、测试 SFTP 登录

从本地或远程:

sftp sftpuser@服务器IP

或使用 FileZilla:

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

六、常见问题

1. 登录后提示权限错误

通常是因为:

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

检查:

ls -ld /sftp /sftp/sftpuser

2. 只能上传不能下载?

确认用户对子目录有正确权限。

3. 禁止 SSH 登录,仅 SFTP

上面的 ForceCommand internal-sftp 已实现。


七、可选增强

  • 使用 SSH 密钥登录
  • 配置 fail2ban 防爆破
  • 限制 IP 访问(AllowUsers)
  • 日志审计:/var/log/auth.log

如果你需要:

  • 多用户 SFTP
  • 只读 / 只写权限
  • Docker 中的 SFTP
  • vsftpd(FTP 而非 SFTP)

可以继续告诉我你的使用场景。

0 踩