温馨提示×

debian sftp如何开启权限

小樊
43
2026-09-21 20:20:04
栏目: 智能运维

在 Debian 上“开启 SFTP 权限”通常包含几个层面:系统用户能否使用 SFTP、SSH 是否允许 SFTP、以及目录权限是否正确。下面按常见场景说明。


一、基础:确保 SSH 服务已安装并运行

sudo apt update
sudo apt install openssh-server
sudo systemctl status ssh

如未运行:

sudo systemctl start ssh
sudo systemctl enable ssh

二、开启 SFTP 子系统(默认已开启)

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

确认存在以下行(通常默认有):

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

修改后重启 SSH:

sudo systemctl restart ssh

三、允许用户使用 SFTP(普通用户)

只要用户有:

  • 有效的系统账号
  • 正确的家目录权限
  • 使用密码或密钥登录

即可 SFTP 登录。

示例:

sudo adduser sftpuser

测试:

sftp sftpuser@服务器IP

四、限制用户只能 SFTP(不能 SSH 登录)

1. 修改 sshd_config

sudo nano /etc/ssh/sshd_config

在末尾添加:

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

2. 设置目录权限(非常关键)

sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

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

3. 重启 SSH

sudo systemctl restart ssh

五、批量限制 SFTP 用户组

Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser

六、常见问题排查

1. 登录失败

sudo tail -f /var/log/auth.log

2. 权限错误(bad ownership)

  • Chroot 目录不是 root
  • 用户家目录权限过松

3. SELinux

Debian 默认无 SELinux,可忽略


如果你能说明:

  • 是 普通 SFTP 还是 限制目录
  • 是否使用 密钥 / 密码
  • Debian 版本

我可以给你更精确的配置示例。

0 踩