在 Debian 上配置 SFTP(通常基于 OpenSSH)一般有几种常见场景。下面从最常用、最安全的方式讲起,并给出完整步骤。
这是推荐做法,适合文件交换用户。
sudo apt update
sudo apt install openssh-server
sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser
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 拥有,用户不能写,子目录可写
编辑:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match Group sftpusers
ChrootDirectory /srv/sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
sudo systemctl restart ssh
sftp sftpuser@服务器IP
如果用户已有 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 风格权限),可以告诉我,我可以给你定制方案。