在 CentOS 上测试 SFTP 连通性,可以从本机、同网段、跨网络多个层面来排查。下面给你一套常用且实用的测试方法,从简单到深入。
SFTP 依赖 sshd,先确认服务是否启动:
systemctl status sshd
正常应看到:
Active: active (running)
如未启动:
systemctl start sshd
systemctl enable sshd
ss -lntp | grep ssh
或:
netstat -lntp | grep ssh
应看到类似:
LISTEN 0 128 0.0.0.0:22
sftp localhost
或指定用户:
sftp user@localhost
✅ 成功示例:
sftp>
❌ 失败常见提示:
Connection refused → 服务未启动Permission denied → 用户名/密码错误Connection timed out → 防火墙或网络问题sftp user@centos_ip
示例:
sftp root@192.168.1.10
ssh user@centos_ip
✅ 能 SSH 登录 → SFTP 基本没问题
❌ SSH 不通 → SFTP 一定不通
telnet centos_ip 22
或:
nc -vz centos_ip 22
✅ 成功:
Connected to centos_ip.
❌ 失败:
Connection refused / timed out
firewall-cmd --list-all
确认是否放行 22 端口:
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
或直接放行端口:
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
查看状态:
getenforce
如果是 Enforcing,可能影响 SFTP 访问:
setenforce 0 # 临时关闭(测试用)
⚠️ 生产环境不建议直接关闭,可配置 SELinux 规则。
journalctl -u sshd -f
或:
tail -f /var/log/secure
常见错误:
Failed passwordConnection closedBad ownership or modes for chroot pathcurl -u user:password sftp://centos_ip/
| 现象 | 原因 |
|---|---|
| Connection refused | sshd 未启动 |
| Connection timed out | 防火墙 / 网络 |
| Permission denied | 用户名/密码错误 |
| 能 SSH 不能 SFTP | 配置限制(ForceCommand) |
| chroot 后无法登录 | 目录权限问题 |
systemctl status sshd
ss -lntp | grep 22
firewall-cmd --list-all
sftp user@ip
如果你愿意,可以告诉我:
我可以帮你精准定位问题。