温馨提示×

怎样设置debian sftp

小樊
36
2026-10-24 04:31:39
栏目: 智能运维

在 Debian 上配置 SFTP(通常基于 OpenSSH)一般有几种常见场景。下面从最常用、最安全的方式讲起,并给出完整步骤。


一、仅使用 SFTP(禁止 SSH 登录,Chroot 限制目录)

这是推荐做法,适合文件交换用户。

1. 安装 OpenSSH(一般已安装)

sudo apt update
sudo apt install openssh-server

2. 创建 SFTP 用户和目录

sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

3. 创建 Chroot 目录

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

⚠️ Chroot 目录必须 root 拥有,用户不能写,子目录可写

4. 配置 SSH

编辑:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

5. 重启 SSH

sudo systemctl restart ssh

6. 测试

sftp sftpuser@服务器IP

二、普通用户使用 SFTP(不限制目录)

如果用户已有 SSH 权限,可直接用:

sftp username@ip

无需额外配置。


三、使用密钥登录(更安全)

ssh-keygen
ssh-copy-id sftpuser@ip

然后在 sshd_config 中可禁用密码:

PasswordAuthentication no

四、防火墙设置

sudo ufw allow OpenSSH

五、常见问题

❌ 登录后提示

fatal: bad ownership or modes for chroot directory

原因:Chroot 目录不是 root 拥有或非 755

❌ 能登录但不能上传

确认上传目录权限:

sudo chown sftpuser:sftpusers /srv/sftp/sftpuser

如果你有特殊需求(如 多用户共享目录、只读 SFTP、Docker 环境、FTP 风格权限),可以告诉我,我可以给你定制方案。

0 踩