首页 > 教程攻略 > ai资讯 >OpenClaw端口冲突怎么避免再次出现?

OpenClaw端口冲突怎么避免再次出现?

来源:互联网 时间:2026-08-02 12:17:23

说到底,问题的根源就是多个进程在抢着占用TCP 22端口这个“坑位”。要彻底解决,不能只靠临时释放端口,得把冲突的源头切断,同时把端口分配逻辑固化下来。具体操作分几步:禁用Windows自带的OpenSSH服务并重启,再把OpenClaw的SSH端口显式改成高位端口(比如2222),同步更新客户端URL和防火墙规则。

OpenClaw端口冲突怎么避免再次出现?

OpenClaw端口冲突会导致服务无法启动,或者SSH连接一上来就被重置(Connection reset by ip port 22)。说白了,就是多个进程在争抢TCP 22端口,造成了资源抢占。避免再次出现的关键动作,不是临时释放端口,而是切断冲突根源并固化端口分配逻辑——这才是治本。

确认当前22端口真实占用者

以管理员身份打开PowerShell,执行:
netstat -ano | findstr :22

观察输出中的PID列——如果同时出现两个以上LISTENING状态的条目,说明存在隐性冲突。常见的干扰源包括:Win32-OpenSSH的sshd.exe、Gitea内置的SSH服务、Git for Windows自带的OpenSSH,甚至某些远程控制软件(比如TeamViewer启用的SSH兼容层)。

这一步必须做,否则后续所有操作都只是在掩盖症状。光靠任务管理器搜“sshd”很可能漏掉那些无窗口进程,得用命令行确认才行。

永久禁用Windows自带OpenSSH服务

方法一:通过服务管理器禁用(推荐)
WIN+R → 输入services.msc → 找到【OpenSSH Authentication Agent】和【OpenSSH SSH Server】→ 右键 → 属性 → 启动类型设为“禁用” → 停止正在运行的服务。

方法二:命令行强制卸载(适用于离线安装版本)
以管理员身份运行CMD → 进入C:WindowsSystem32OpenSSH目录 → 执行:
uninstall-sshd.ps1

【禁用后必须重启系统】

,否则旧进程残留的socket句柄仍可能被复用,导致Gitea或OpenClaw启动时照样报Connection reset。

为OpenClaw显式绑定非默认端口

第一步:编辑OpenClaw配置文件(通常为config.yaml或app.ini)
定位ssh → port字段,将其从22改为一个高位端口,例如2222或2024。

第二步:同步更新客户端连接地址
所有调用OpenClaw的Git客户端URL必须同步改为git@host:2222/xxx.git,否则客户端仍会尝试连22端口,然后失败。

第三步:验证新端口是否被监听
启动OpenClaw后执行:
netstat -ano | findstr :2222
确认输出中存在LISTENING状态,且对应PID是OpenClaw主进程,而不是其他程序。

第四步:防火墙放行新端口
PowerShell中执行:
New-NetFirewallRule -Name "OpenClaw-SSH-In-TCP" -DisplayName "OpenClaw SSH (2222)" -Enabled True -Direction Inbound -Protocol TCP -LocalPort 2222 -Action Allow