温馨提示×

ubuntu sftp为何拒绝访问

小樊
47
2026-09-23 14:00:33
栏目: 智能运维

在 Ubuntu 上 SFTP 拒绝访问(connection refused / permission denied) 通常由以下几类原因导致,你可以逐一排查:


一、SSH / SFTP 服务未运行

SFTP 依赖 SSH 服务,如果 sshd 没启动,就会“拒绝访问”。

检查 SSH 是否运行

systemctl status ssh

若未运行,启动它

sudo systemctl start ssh
sudo systemctl enable ssh

测试端口(默认 22)

ssh user@localhost

或

telnet localhost 22

二、防火墙阻止了 22 端口

Ubuntu 默认可能启用 ufw

sudo ufw status

如果 22 未允许:

sudo ufw allow 22

云服务器还要检查 安全组 / 网络 ACL


三、用户被禁止 SFTP / SSH 登录

1️⃣ 用户 shell 不允许登录

SFTP 用户通常需要:

/bin/bash
或
/usr/sbin/nologin(需配置)

查看:

grep 用户名 /etc/passwd

2️⃣ SSH 配置限制

编辑:

sudo nano /etc/ssh/sshd_config

检查是否包含:

AllowUsers
DenyUsers

示例错误:

DenyUsers testuser

修改后重启 SSH:

sudo systemctl restart ssh

四、SFTP 被限制为 Chroot(常见)

如果你使用了:

Subsystem sftp internal-sftp

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp

必须满足:

  • ChrootDirectory 属主必须是 root
  • 权限不能大于 755
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

否则会直接 拒绝访问


五、目录权限问题(最常见)

即使能登录,上传/下载也可能被拒:

ls -ld /home/user
ls -ld /home/user/upload

规则:

  • 用户主目录不能是 group/write 全开
  • 上传目录必须用户自己可写

六、密码 / 密钥错误

  • 密码错误 → permission denied
  • 密钥权限过松(如 644)→ 被 SSH 拒绝
chmod 600 ~/.ssh/id_rsa

七、SELinux / AppArmor(较少见)

Ubuntu 默认 AppArmor,一般不会拦 SFTP
但如果你做了特殊安全加固,可临时测试:

sudo aa-complain /usr/sbin/sshd

快速自检清单 ✅

  • [ ] ssh 服务已启动
  • [ ] 22 端口开放
  • [ ] 用户未被 DenyUsers
  • [ ] Chroot 目录权限正确
  • [ ] 目录属主和权限合理
  • [ ] 使用正确用户名/密码/密钥

如果你愿意,可以把 具体报错信息(如 Permission denied、Connection refused、subsystem request failed)贴出来,我可以直接帮你定位是哪一条原因。

0 踩