在 CentOS 上测试 SFTP 是否可连通,可以从本机测试和远程测试两个角度来做。下面按常见场景给你一套完整做法。
SFTP 通常由 sshd 提供,先确认服务状态:
systemctl status sshd
如果没启动:
systemctl start sshd
systemctl enable sshd
在服务器本机执行:
sftp localhost
或指定用户:
sftp username@localhost
✅ 成功示例:
Connected to localhost.
sftp>
❌ 失败常见提示:
Connection refused → sshd 没启动或端口不对Permission denied → 用户名/密码或权限问题退出:
exit
在另一台 Linux / macOS 机器上:
sftp username@服务器IP
例如:
sftp root@192.168.1.100
如果 SSH 端口不是 22:
sftp -P 2222 username@服务器IP
SFTP 依赖 SSH,先确认 SSH 是否通:
ssh username@服务器IP
➡ 如果 SSH 都连不上,SFTP 一定不行。
telnet 服务器IP 22
或:
nc -vz 服务器IP 22
✅ 成功:
Connection to 192.168.1.100 22 port [tcp/ssh] succeeded!
firewall-cmd --list-ports
如果 22 没开放:
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
getenforce
如果是 Enforcing,可临时关闭测试:
setenforce 0
如果关闭后 SFTP 正常,再针对性配置 SELinux。
vim /etc/ssh/sshd_config
确认以下内容存在且未被注释:
Subsystem sftp /usr/libexec/openssh/sftp-server
修改后重启 SSH:
systemctl restart sshd
PowerShell 示例:
sftp user@服务器IP
| 问题 | 原因 |
|---|---|
| Connection refused | sshd 未启动 / 端口不通 |
| Permission denied | 用户名/密码错误 / 禁止密码登录 |
| 能 SSH 不能 SFTP | sftp subsystem 配置错误 |
| 超时 | 防火墙 / 安全组 / 网络 |
如果你愿意,可以告诉我:
我可以帮你精准定位问题。