温馨提示×

如何配置debian的sftp

小樊
43
2026-09-18 17:56:54
栏目: 智能运维

下面以 Debian(如 Debian 11/12) 为例,说明如何配置 SFTP(基于 OpenSSH),通常推荐使用 chroot 限制用户只能访问指定目录,更安全。


一、安装 OpenSSH(一般已默认安装)

sudo apt update
sudo apt install openssh-server

确认服务运行:

sudo systemctl status ssh

二、创建 SFTP 用户和目录

1. 创建用户(不允许 SSH 登录)

sudo adduser sftpuser

或只允许 SFTP:

sudo useradd -m -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

2. 创建 SFTP 根目录(chroot 目录)

⚠️ chroot 目录必须属主为 root,且其他用户不可写

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

3. 创建可写目录

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

三、配置 SSH(关键)

编辑配置文件:

sudo nano /etc/ssh/sshd_config

1. 注释掉或确认以下行

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

2. 添加 SFTP 子系统(使用 internal-sftp)

Subsystem sftp internal-sftp

3. 添加 SFTP 用户限制配置

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

如果有多个用户,可用:

Match Group sftpusers

四、重启 SSH 服务

sudo systemctl restart ssh

五、测试 SFTP 连接

sftp sftpuser@your_server_ip

应只能看到:

sftp> ls
upload

并且无法访问 / 以外目录。


六、常见注意事项

✅ chroot 目录权限要求

  • 属主必须是 root
  • 权限不能大于 755
  • 用户主目录不能可写

✅ 日志排查

sudo journalctl -u ssh
sudo tail -f /var/log/auth.log

✅ 防火墙

sudo ufw allow ssh

七、可选:使用密钥登录

ssh-keygen
ssh-copy-id sftpuser@server

并在 sshd_config 中:

PasswordAuthentication no

如果你需要:

  • 多用户 SFTP
  • 只读 / 只写
  • 配合 Nginx / FTP 客户端
  • Docker 中配置 SFTP

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

0