温馨提示×

CentOS如何测试SFTP连接

小樊
75
2026-08-04 00:14:46
栏目: 智能运维

在 CentOS 上测试 SFTP 连接,可以从本机测试和远程测试两个角度来做。下面按常见场景给你一套完整方法。


一、确认 SFTP 服务是否运行(CentOS 7/8/Stream)

SFTP 一般由 OpenSSH 提供,先确认服务状态:

systemctl status sshd

如果未启动:

systemctl start sshd
systemctl enable sshd

确认端口(默认 22):

ss -lntp | grep ssh

二、本机测试 SFTP(localhost)

1️⃣ 使用 sftp 命令测试

sftp username@localhost

或指定端口:

sftp -P 22 username@localhost

✅ 成功示例:

sftp>

❌ 常见失败:

  • Connection refused → sshd 未启动
  • Permission denied → 用户名/密码错误
  • Connection closed → 权限或 SELinux 问题

2️⃣ 使用 ssh 先测试(推荐)

SFTP 依赖 SSH,先确认 SSH 是否通:

ssh username@localhost

如果 SSH 能连,SFTP 基本没问题。


三、远程测试 SFTP(从另一台机器)

1️⃣ 从 Linux / macOS 测试

sftp username@服务器IP

指定端口:

sftp -P 2222 username@服务器IP

2️⃣ 从 Windows 测试

✅ 方法一:PowerShell(Win 10+)

sftp username@服务器IP

✅ 方法二:FileZilla(图形化)

  • 协议:SFTP
  • 主机:服务器 IP
  • 端口:22
  • 用户名 / 密码

四、使用命令行工具测试(不进入交互)

1️⃣ 测试登录是否成功

ssh -v username@服务器IP

查看是否有:

Authentication succeeded

2️⃣ 使用 sftp 非交互测试

echo "quit" | sftp username@服务器IP

或:

sftp -oBatchMode=yes username@服务器IP <<< "quit"

五、检查防火墙(常见问题)

firewalld(CentOS 7+)

firewall-cmd --list-ports
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload

iptables(老系统)

iptables -L -n

六、检查 SELinux(CentOS 特有)

getenforce

如果是 Enforcing,可临时测试:

setenforce 0

如果关闭后 SFTP 正常,说明是 SELinux 问题。


七、查看日志排查问题

journalctl -u sshd -f

或:

tail -f /var/log/secure

八、常见错误速查表

错误 原因
Connection refused sshd 未启动 / 防火墙
Permission denied 用户名/密码错误
Connection closed 用户被禁止 / shell 问题
Broken pipe 网络 / 防火墙

九、确认用户是否允许 SFTP

如果用户被限制为 SFTP-only:

grep username /etc/passwd

查看 shell 是否为:

/bin/false
/usr/sbin/nologin

搭配 /etc/ssh/sshd_config:

Subsystem sftp internal-sftp
Match User username
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(cat /etc/centos-release)
  • ✅ 是 本机连不上 还是 远程连不上
  • ✅ 报错内容

我可以直接帮你定位问题。

0 踩