温馨提示×

ubuntu sftp为何被拒绝

小樊
51
2026-10-14 02:42:22
栏目: 智能运维

在 Ubuntu 上 SFTP 连接被拒绝,通常原因集中在 服务未开启、配置错误、权限问题或防火墙/网络限制。下面按最常见原因逐一说明,并给出排查方法。


一、SFTP 依赖 SSH,先确认 SSH 是否正常

SFTP 本质是通过 SSH(22 端口) 传输的。

1. 检查 SSH 服务是否运行

systemctl status ssh

或(老版本)

service ssh status

如果没运行:

sudo systemctl start ssh
sudo systemctl enable ssh

二、SSH 服务没装(常见于新系统)

sudo apt update
sudo apt install openssh-server

三、防火墙阻止了 22 端口

查看防火墙状态

sudo ufw status

如果 22 没允许:

sudo ufw allow 22
sudo ufw reload

四、SSH 配置禁止了 SFTP

查看 sshd 配置

sudo nano /etc/ssh/sshd_config

确认有以下内容(通常默认有):

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

如果这行被注释或改错,SFTP 会直接失败。

修改后重启:

sudo systemctl restart ssh

五、用户被禁止登录(很常见)

1. 用户 shell 不对

SFTP 用户通常需要:

/bin/bash

或

/usr/sbin/nologin(需配置 chroot)

查看用户:

grep 用户名 /etc/passwd

2. sshd_config 限制了用户

检查是否有:

AllowUsers
DenyUsers

或

Match User xxx
    ForceCommand internal-sftp

六、Chroot 配置错误(限制目录时)

如果配置了:

Match User sftpuser
    ChrootDirectory /sftp
    ForceCommand internal-sftp

Chroot 目录权限必须满足:

  • 属主是 root
  • 其他用户不可写
chown root:root /sftp
chmod 755 /sftp

否则会直接被拒绝。


七、网络 / IP / 端口问题

  • 连接的是正确 IP
  • 端口是 22(或自定义端口)
  • 云服务器安全组是否放行 22

测试:

ssh user@ip

如果 SSH 都连不上,SFTP 一定失败。


八、常见报错对应原因

报错 原因
Connection refused SSH 没开 / 防火墙
Permission denied 密码错 / 用户被禁
broken pipe Chroot 权限错
subsystem request failed sftp-server 路径错

九、快速排查清单 ✅

systemctl status ssh
sudo ufw status
grep sftp /etc/ssh/sshd_config
ssh user@localhost

如果你愿意,可以贴出:

  • Ubuntu 版本
  • 报错原文
  • sshd_config 相关配置

我可以帮你精确判断是哪一种原因。

0 踩