SSH连接失败须逐层排查:先确认sshd服务运行状态(systemctl status sshd),再检查防火墙(ufw/firewalld/宝塔)及云安全组是否放行端口,最后验证sshd_config中ListenAddress是否为0.0.0.0且Port配置正确。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw部署完成后SSH端口未开放,导致远程连接失败,必须逐层排查服务监听、防火墙策略与云平台安全组三重拦截点,缺一不可。
确认sshd服务是否真正在运行
别只看“安装完成”四个字——很多情况下OpenClaw镜像或脚本只装了OpenSSH包,但没启动服务。用root权限执行:
systemctl status sshd
如果显示 【inactive (dead)】,说明服务根本没跑起来,立刻执行:
systemctl start sshd && systemctl enable sshd
启动后仍报错?检查日志:
journalctl -u sshd -n 50 --no-pager | grep -i "fatal\|error\|listen"
常见致命错误是 /etc/ssh/sshd_config 里写了 ListenAddress 127.0.0.1 ——这会让sshd只监听本地回环,外部根本连不上。必须改成 0.0.0.0 或删掉该行。
检查系统级防火墙是否放行端口
方法一:Ubuntu/Debian(ufw)
sudo ufw status verbose → 看输出里是否有 22/tcp 或你自定义端口的 ALLOW 规则
如果没有,执行:
sudo ufw allow 22/tcp && sudo ufw reload
方法二:CentOS/RHEL/Rocky(firewalld)
sudo firewall-cmd --list-ports → 若无输出或不含22/tcp,则执行:
sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload
方法三:宝塔面板用户
进「安全」页面 → 找到“放行端口”输入框 → 输入 22 → 点击“放行” → 刷新页面确认状态变为“已放行”
【注意:宝塔防火墙和系统防火墙可能同时生效,只关一个没用】
OpenClaw专家 — 用于任何OpenClaw问题或需求,包括配置错误、网关崩溃、网关未启动、斜杠指令、频道路由等。
验证sshd是否真的在监听目标端口
第一步:用 ss 命令查监听状态
sudo ss -tlnp | grep ':22'
第二步:若无输出,说明sshd没绑定端口。此时再检查配置文件:
sudo grep -E "^(Port|ListenAddress)" /etc/ssh/sshd_config
第三步:重点确认 Port 行未被注释且值正确(如 Port 22),且没有多个 Port 行冲突;ListenAddress 行要么不存在,要么是 0.0.0.0 或 ::(IPv6通配)
第四步:改完配置必须重启服务:
sudo systemctl restart sshd
云服务器必须同步更新安全组规则
① 登录阿里云/腾讯云/AWS控制台 → 找到对应ECS实例 → 进入“安全组”页签
② 点击关联的安全组名称 → 进入“入方向规则” → 点击“添加安全组规则”
③ 协议类型选 TCP,端口范围填 22(或你改的端口如2222),源IP建议先填 0.0.0.0/0 测试用
④ 保存后等待 10 秒,再试 ssh 连接
【云平台安全组不放行,哪怕sshd监听着、防火墙开着,请求也到不了服务器】
Windows系统额外检查项
PowerShell管理员模式下执行:
netsh advfirewall firewall show rule name="OpenSSH Server (sshd)"
若提示“找不到规则”,说明防火墙没放行。立即创建:
New-NetFirewallRule -Name "OpenSSH Server" -DisplayName "OpenSSH Server (sshd)" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
再确认服务名是否为 sshd(某些Win11版本是 OpenSSHSSHServer):
Get-Service | Where-Object {$_.Name -like "*ssh*"}














