在 Ubuntu 上 SFTP 拒绝访问(connection refused / permission denied) 通常由以下几类原因导致,你可以逐一排查:
SFTP 依赖 SSH 服务,如果 sshd 没启动,就会“拒绝访问”。
systemctl status ssh
sudo systemctl start ssh
sudo systemctl enable ssh
ssh user@localhost
或
telnet localhost 22
Ubuntu 默认可能启用 ufw
sudo ufw status
如果 22 未允许:
sudo ufw allow 22
云服务器还要检查 安全组 / 网络 ACL
SFTP 用户通常需要:
/bin/bash
或
/usr/sbin/nologin(需配置)
查看:
grep 用户名 /etc/passwd
编辑:
sudo nano /etc/ssh/sshd_config
检查是否包含:
AllowUsers
DenyUsers
示例错误:
DenyUsers testuser
修改后重启 SSH:
sudo systemctl restart ssh
如果你使用了:
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
必须满足:
ChrootDirectory 属主必须是 root755sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
否则会直接 拒绝访问
即使能登录,上传/下载也可能被拒:
ls -ld /home/user
ls -ld /home/user/upload
规则:
chmod 600 ~/.ssh/id_rsa
Ubuntu 默认 AppArmor,一般不会拦 SFTP
但如果你做了特殊安全加固,可临时测试:
sudo aa-complain /usr/sbin/sshd
如果你愿意,可以把 具体报错信息(如 Permission denied、Connection refused、subsystem request failed)贴出来,我可以直接帮你定位是哪一条原因。