温馨提示×

为何 Ubuntu SFTP 失败

小樊
54
2026-09-11 06:15:44
栏目: 智能运维

Ubuntu 上 SFTP 连接失败 的原因很多,常见情况和排查思路如下,你可以对照看看是哪一种。


一、最常见原因(80% 问题在这里)

1️⃣ SSH / SFTP 服务未启动

SFTP 依赖 OpenSSH Server,不是单独服务。

检查:

systemctl status ssh

如果没运行:

sudo apt install openssh-server
sudo systemctl enable --now ssh

2️⃣ 防火墙拦截 22 端口

sudo ufw status

如果开启了:

sudo ufw allow 22

云服务器还要检查 安全组 / 防火墙规则


3️⃣ 用户被禁止登录(很常见)

用户被设置为 /sbin/nologin/bin/false

查看:

grep 用户名 /etc/passwd

如果看到:

username:x:1000:1000::/home/username:/usr/sbin/nologin

修复:

sudo usermod -s /bin/bash 用户名

二、SSH 配置问题(服务器拒绝 SFTP)

4️⃣ sshd_config 中未启用 SFTP

编辑:

sudo nano /etc/ssh/sshd_config

确认有这一行(默认有):

Subsystem sftp /usr/lib/openssh/sftp-server

若使用 internal-sftp(推荐):

Subsystem sftp internal-sftp

修改后重启:

sudo systemctl restart ssh

5️⃣ 限制了用户访问

例如:

AllowUsers alice
Match User bob
    ForceCommand internal-sftp
    ChrootDirectory /sftp/bob

如果配置错误(如 Chroot 权限不对),SFTP 会直接断开。


三、权限问题(Chroot 必踩坑)

6️⃣ ChrootDirectory 权限错误

Chroot 目录必须满足:

  • 属主是 root
  • 其他用户不能写

错误示例:

/sftp/bob 属主是 bob  ❌

正确:

sudo chown root:root /sftp/bob
sudo chmod 755 /sftp/bob

用户真正可写目录:

sudo mkdir /sftp/bob/upload
sudo chown bob:bob /sftp/bob/upload

四、客户端 / 网络问题

7️⃣ 端口不是 22

连接时指定:

sftp -P 2222 user@host

8️⃣ 密钥问题

  • 公钥没放进 ~/.ssh/authorized_keys
  • 权限错误:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

五、快速排查流程(推荐)

在客户端执行:

sftp -v user@host

看最后报错信息,通常能直接定位:

  • Connection refused → 服务/防火墙
  • Permission denied → 用户/密钥
  • 连接后立刻断开 → sshd_config / chroot

六、如果你愿意,我可以进一步帮你

你可以贴出:

  • 客户端报错信息
  • sshd_config 相关配置
  • 使用的用户和目录结构

我可以精确告诉你哪一行配置错了

0