下面以 Debian(如 Debian 11/12) 为例,说明如何配置 SFTP(基于 OpenSSH),通常推荐使用 chroot 限制用户只能访问指定目录,更安全。
sudo apt update
sudo apt install openssh-server
确认服务运行:
sudo systemctl status ssh
sudo adduser sftpuser
或只允许 SFTP:
sudo useradd -m -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser
⚠️ chroot 目录必须属主为 root,且其他用户不可写
sudo mkdir -p /srv/sftp/sftpuser
sudo chown root:root /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp/sftpuser
sudo mkdir /srv/sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /srv/sftp/sftpuser/upload
编辑配置文件:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /srv/sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no
如果有多个用户,可用:
Match Group sftpusers
sudo systemctl restart ssh
sftp sftpuser@your_server_ip
应只能看到:
sftp> ls
upload
并且无法访问 / 以外目录。
root755sudo 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
如果你需要:
可以告诉我你的具体使用场景。