温馨提示×

为什么linux sftp连不上

小樊
57
2026-09-05 03:18:52
栏目: 智能运维

Linux 下 SFTP 连不上 的原因很多,下面按最常见 → 较少见的顺序帮你排查。你可以对照看看属于哪一种。


一、网络/基础连通性问题(最常见)

1. 服务器 IP 或端口写错

  • SFTP 默认端口是 22(不是 21)
  • 检查命令:
sftp -P 22 user@ip

2. 网络不通

ping ip
telnet ip 22
# 或
nc -vz ip 22

不通说明:

  • 防火墙
  • 安全组(云服务器)
  • 网络隔离

二、SSH / SFTP 服务未运行

1. 服务端没开 sshd

systemctl status sshd

如果没运行:

systemctl start sshd
systemctl enable sshd

2. SFTP 子系统被禁用

查看:

cat /etc/ssh/sshd_config | grep sftp

应有:

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

改完重启:

systemctl restart sshd

三、权限问题(非常常见)

1. 用户家目录权限太开放

SFTP 要求:

家目录不能给组/其他写权限

错误示例:

drwxrwxrwx /home/user

修正:

chmod 755 /home/user
chown user:user /home/user

2. 使用了 Chroot 但目录不对

如果有:

Match User sftpuser
ChrootDirectory /data/sftp

必须满足:

  • /data/sftp 属主是 root
  • 权限 ≤ 755

四、认证失败(连得上但登不进)

1. 密码错误 / 用户被禁

grep user /etc/passwd
passwd -S user

2. 禁止密码登录

grep PasswordAuthentication /etc/ssh/sshd_config

如果是 no,必须用密钥。

3. 密钥权限问题

客户端:

chmod 600 key.pem

五、防火墙 / 安全策略

1. iptables / firewalld

iptables -L -n
firewall-cmd --list-all

2. 云服务器安全组

  • 必须放行 22 端口(TCP)

六、查看真实错误(最重要)

客户端加 verbose

sftp -v user@ip

ssh -v user@ip

服务端日志

tail -f /var/log/secure
# 或
journalctl -u sshd -f

七、快速自检清单 ✅

  • [ ] IP / 端口正确
  • [ ] 网络通(22 端口)
  • [ ] sshd 在运行
  • [ ] sftp 子系统启用
  • [ ] 用户权限正确
  • [ ] 认证方式匹配
  • [ ] 防火墙/安全组放行

如果你愿意,可以把下面信息发我,我可以直接帮你定位:

  1. 客户端报错(完整)
  2. 服务端系统(CentOS / Ubuntu?)
  3. ssh -v 的输出(关键部分)

0