在 Debian 中,SFTP 通常是通过 OpenSSH 自带的 sftp-server 提供的,只要安装了 openssh-server,一般就默认支持 SFTP,不需要额外“开启”特殊服务。下面按常见情况说明。
dpkg -l | grep openssh-server
sudo apt update
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
注:Debian 中 SSH 服务名通常是
ssh
查看 SSH 配置:
sudo nano /etc/ssh/sshd_config
确保有以下内容(默认存在):
Subsystem sftp /usr/lib/openssh/sftp-server
如果存在且未被注释(#),说明 SFTP 已开启。
修改后重启 SSH:
sudo systemctl restart ssh
在客户端执行:
sftp username@服务器IP
如果能登录,说明 SFTP 正常工作。
如果你希望某些用户只能 SFTP,不能 SSH 登录:
sudo adduser sftpuser
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
PasswordAuthentication yes
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sudo systemctl restart ssh
如果启用了防火墙:
sudo ufw allow ssh
(SFTP 使用 SSH 的 22 端口)
Subsystem sftp 是否被注释ChrootDirectory 权限不正确ssh如果你有具体需求(比如:只允许 SFTP、不能登录系统、多用户隔离、使用密钥登录),可以告诉我,我可以给你一份完整配置示例。