工作流模板 · 高级

网络运维 Agent:爱快 / OpenWrt / iStoreOS / OpenClash 排错模板

给小白看的网络运维 Agent 模板,覆盖爱快、OpenWrt、iStoreOS、OpenClash、ShadowsocksR Plus+、PassWall、旁路由、DNS 分流、订阅转换、插件配置维修、OpenCode 可直接调用的 OpenWrt SSH 工具和备份回滚。

  • 网络运维
  • 爱快
  • OpenWrt
  • iStoreOS
  • OpenClash
  • PassWall
  • ShadowsocksR Plus+
  • 订阅转换
  • 插件维修
  • 旁路由
  • OpenCode SSH
更新于 2026-05-25

一句话结论

网络运维 Agent 的第一原则是先备份、先只读检查、一次只改一个变量,别让小问题变成全网断线。

适用场景

  • 家用软路由、店铺网络、工作室网络突然无法上网,需要快速定位 WAN、LAN、DNS、网关或插件问题
  • 爱快主路由 + OpenWrt / iStoreOS 旁路由,分不清到底是主路由、旁路由、DNS 分流还是代理插件出错
  • OpenClash、ShadowsocksR Plus+、PassWall、订阅转换、规则集更新、插件启动失败、TUN / TProxy 相关问题反复出现
  • OpenCode 第一次就需要一个能直接调用的 SSH 工具去检查 OpenWrt,而不是让它自己输入密码或手写 SSH 命令
  • 想让 Agent 帮忙整理排错步骤、生成备份清单、输出可复制命令和回滚方案

常见现象

  • 手机能连 Wi-Fi 但打不开网页,或者只有部分网站打不开
  • OpenClash / PassWall / ShadowsocksR Plus+ 显示运行中,但实际没有代理效果
  • 订阅导入失败、节点为空、规则集更新失败、订阅转换格式不匹配、DNS 泄漏或解析很慢
  • OpenCode 说无法 ssh 设备、Permission denied、Host key verification failed,或者提示需要密码但它不能输入
  • 旁路由接入后设备拿不到网关,或者网关指向正确但无法访问外网
  • 改完配置后进不了后台,只能重启或断电恢复

原因解释

  • 小白最常见的问题不是命令不会敲,而是没有把网络拆成 WAN、LAN、DNS、插件、订阅、客户端六层来查
  • 软路由场景里经常有两台设备同时负责 DHCP、网关或 DNS,导致流量走向和自己以为的不一样
  • 代理插件配置里订阅地址、规则模式、DNS 模式、TUN / TProxy 模式互相影响,随便改一个开关就可能影响全局
  • OpenCode 这类 CLI Agent 适合调用固定工具,不适合在 SSH 里临时输入密码;Mac 和 Windows 都应该先准备 `openwrt-ssh` / `openwrt-ssh.ps1` 这类安全包装工具
  • 没有备份和回滚点,Agent 直接给修改命令会放大风险

解决步骤

  1. 先收集拓扑:主路由型号、旁路由 IP、网关、DNS、DHCP 由谁发、哪些设备受影响。
  2. 先做只读检查:只看状态、路由表、DNS、日志、插件状态、订阅配置脱敏结果,不急着改配置。
  3. 如果用 OpenCode 远程检查设备,先安装站内提供的 OpenWrt SSH 工具,让它只暴露 `status`、`network`、`dns`、`proxy`、`logs`、`backup` 这类固定动作。
  4. 先备份:导出爱快配置、OpenWrt / iStoreOS 的 network、dhcp、firewall、openclash、passwall、passwall2、shadowsocksr 等配置。
  5. 按顺序排查:先 WAN 能不能通,再 LAN 地址是否冲突,再 DNS 是否解析,再插件是否接管流量,再看订阅转换和插件日志。
  6. 一次只改一个变量:例如只换 DNS、只关 TUN、只切换规则模式,改完立刻记录结果。
  7. 所有修改都要写回滚步骤:如果 5 分钟内没有改善,就恢复上一份配置。

可复制命令

# OpenWrt / iStoreOS:只读检查,不会修改配置
ubus call system board
ip addr show
ip route show
uci show network | sed -n '1,160p'
uci show dhcp | sed -n '1,160p'
uci show firewall | sed -n '1,220p'
logread | tail -n 120
# OpenWrt / iStoreOS:先备份,再考虑修改
mkdir -p /tmp/router-backup
uci export network > /tmp/router-backup/network.$(date +%Y%m%d-%H%M%S).uci
uci export dhcp > /tmp/router-backup/dhcp.$(date +%Y%m%d-%H%M%S).uci
uci export firewall > /tmp/router-backup/firewall.$(date +%Y%m%d-%H%M%S).uci
uci export openclash > /tmp/router-backup/openclash.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
uci export passwall > /tmp/router-backup/passwall.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
uci export passwall2 > /tmp/router-backup/passwall2.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
uci export shadowsocksr > /tmp/router-backup/shadowsocksr.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
ls -lh /tmp/router-backup
# macOS:安装 OpenCode 可直接调用的 OpenWrt SSH 工具
mkdir -p ~/bin
curl -fsSL https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh -o ~/bin/openwrt-ssh
chmod +x ~/bin/openwrt-ssh

# 确认 ~/bin 在 PATH 中;如果没有,就追加到 zsh 配置
case ":$PATH:" in *":$HOME/bin:"*) ;; *) echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc; export PATH="$HOME/bin:$PATH" ;; esac

# 第一次仍由真人完成 SSH Key 和 Host 别名,之后 OpenCode 只调用 openwrt-ssh
mkdir -p ~/.ssh && chmod 700 ~/.ssh
ssh-keygen -t ed25519 -C "opencode-openwrt" -f ~/.ssh/openwrt_opencode
cat ~/.ssh/openwrt_opencode.pub | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
cat >> ~/.ssh/config <<'EOF'
Host openwrt-router
  HostName 192.168.1.1
  User root
  IdentityFile ~/.ssh/openwrt_opencode
  IdentitiesOnly yes
  StrictHostKeyChecking accept-new
EOF

# 给 OpenCode 调用的非交互式工具动作
openwrt-ssh ping
openwrt-ssh status
openwrt-ssh all
# Windows PowerShell:安装 OpenCode 可直接调用的 OpenWrt SSH 工具
New-Item -ItemType Directory -Force "$env:USERPROFILE\bin" | Out-Null
Invoke-WebRequest -Uri "https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh.ps1" -OutFile "$env:USERPROFILE\bin\openwrt-ssh.ps1"
ssh -V

# 第一次仍由真人完成 SSH Key 和 Host 别名,之后 OpenCode 只调用 openwrt-ssh.ps1
New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null
ssh-keygen -t ed25519 -C "opencode-openwrt" -f "$env:USERPROFILE\.ssh\openwrt_opencode"
type "$env:USERPROFILE\.ssh\openwrt_opencode.pub" | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
@"
Host openwrt-router
  HostName 192.168.1.1
  User root
  IdentityFile ~/.ssh/openwrt_opencode
  IdentitiesOnly yes
  StrictHostKeyChecking accept-new
"@ | Add-Content "$env:USERPROFILE\.ssh\config"

# 给 OpenCode 调用的非交互式工具动作
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" ping
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" status
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" all
给 OpenCode 的任务模板:
你是网络运维 Agent。不要直接 ssh,也不要要求输入路由器密码。请先判断当前系统是 Mac 还是 Windows:Mac 调用 openwrt-ssh,Windows 调用 powershell -ExecutionPolicy Bypass -File ~/bin/openwrt-ssh.ps1。只允许使用 ping、status、network、dns、proxy、subscriptions、plugin-status、plugin-config、plugin-logs、plugin-repair、logs、config network、config dhcp、config firewall、backup、all 这些工具动作。先运行 ping、status、plugin-status、subscriptions,再根据结果决定下一步。除 backup 和明确点名的 plugin-repair 外,不要执行修改配置的命令;plugin-repair 每次只修一个插件。
# 订阅转换 / 插件配置 / 插件维修:OpenCode 可直接调用的固定动作
openwrt-ssh subscriptions
openwrt-ssh plugin-status
openwrt-ssh plugin-config openclash
openwrt-ssh plugin-config passwall
openwrt-ssh plugin-config ssr
openwrt-ssh plugin-logs openclash
openwrt-ssh backup plugins

# 软维修会先备份,再重启指定插件服务;一次只修一个
openwrt-ssh plugin-repair openclash
openwrt-ssh plugin-repair passwall
openwrt-ssh plugin-repair ssr
openwrt-ssh dns
openwrt-ssh proxy

仍然不行怎么办

  • 如果你无法进入后台,先不要继续远程修改,优先找本地电脑直连 LAN 口或恢复出厂前的备份。
  • 如果涉及公司、门店或多人共用网络,先约维护窗口,不要在营业时间试错。
  • 如果日志里有订阅地址、节点密码、UUID、Token,发给别人前先打码。
  • 如果 OpenCode 无法输入 SSH 密码,就让真人先完成工具安装和 Key 配置;OpenCode 后续只调用 `openwrt-ssh`,不要把路由器密码贴进提示词。
  • 如果涉及订阅转换,不要把完整订阅 URL、UUID、节点密码或 Token 贴给 Agent;只给打码后的目标格式、插件类型和报错日志。
  • 如果要维修 OpenClash / PassWall / ShadowsocksR Plus+,先跑 `openwrt-ssh backup plugins`,再一次只跑一个 `plugin-repair`。
  • 如果 Agent 给出大段一键脚本,先让它拆成只读检查、备份、单项修改、验证、回滚五段。

这个 Agent 负责什么

  • 爱快:看 WAN 口、拨号、负载均衡、DHCP、DNS、静态路由、端口映射、行为管理是否影响流量。
  • OpenWrt / iStoreOS:看 network、dhcp、firewall、opkg 插件、系统日志、接口状态和路由表。
  • OpenClash / PassWall / ShadowsocksR Plus+:看订阅、节点、规则模式、DNS 模式、TUN / TProxy、透明代理是否接管成功。
  • 旁路由:看主路由 DHCP 是否把网关和 DNS 指到旁路由,客户端是否真的走了旁路由。
  • 订阅转换:看订阅源是否可访问、转换模板是否匹配、目标格式是否被插件支持、敏感参数是否泄露。
  • OpenCode SSH:看本机能否用 SSH Key 非交互登录设备,再让 Agent 执行只读检查;不要让 Agent 代输密码。

推荐排错顺序

  1. 画拓扑:主路由、旁路由、交换机、AP、客户端分别是什么 IP。
  2. 查物理链路:光猫、WAN 口、网线、拨号、上级网关是否正常。
  3. 查基础网络:客户端 IP、网关、DNS、路由表是否符合预期。
  4. 查 DNS:能不能解析域名,解析结果是不是被插件或运营商污染。
  5. 查 OpenCode SSH:先确认普通终端能 `ssh home-router`,再交给 OpenCode 执行远程命令。
  6. 查代理插件:插件是否运行、端口是否监听、规则是否命中、日志是否报错。
  7. 查订阅转换:订阅是否过期、转换服务是否可用、输出格式是否匹配。
  8. 查回滚:恢复上一份配置后是否立刻恢复,确认问题是否由本次改动引起。

订阅转换技能:先定目标格式,再导入插件

订阅转换不是把一个链接随便丢进去。小白要先确认自己要喂给哪个插件:OpenClash 通常要 Clash YAML,PassWall 要它能识别的节点或订阅格式,ShadowsocksR Plus+ 更偏 SSR / SS / V2Ray 兼容节点。Agent 可以帮你检查目标格式和日志,但不要让 Agent 保存完整订阅 URL。

  1. 先问清目标插件:OpenClash、PassWall、PassWall2 还是 ShadowsocksR Plus+。
  2. 再确认输出格式:Clash YAML、sing-box、V2RayN、SSR、SS、Trojan 或混合订阅。
  3. 转换前先用浏览器打开订阅,确认不是 403、404、过期或空内容。
  4. 转换后先看前几行结构:OpenClash 要有 `proxies`、`proxy-groups`、`rules` 这类结构。
  5. 导入后不要急着改 DNS,先运行 `openwrt-ssh subscriptions` 和 `openwrt-ssh plugin-logs openclash` 看是否节点为空、YAML 解析失败或下载失败。
  6. 日志和截图发给 Agent 前,把订阅 URL、token、UUID、节点密码打码。
# 让 OpenCode 检查订阅转换结果,但不要把完整订阅 URL 交给它
openwrt-ssh subscriptions
openwrt-ssh plugin-config openclash
openwrt-ssh plugin-logs openclash
openwrt-ssh plugin-config passwall
openwrt-ssh plugin-logs passwall
openwrt-ssh plugin-config ssr
openwrt-ssh plugin-logs ssr

插件配置技能:OpenClash / PassWall / SSR Plus 分开看

  • OpenClash:重点看配置文件是否下载成功、YAML 是否解析成功、运行模式、DNS 模式、TUN 是否启用、规则集是否更新。
  • PassWall / PassWall2:重点看 TCP / UDP 代理模式、主节点、分流规则、DNS 转发、透明代理端口、是否和 OpenClash 同时接管流量。
  • ShadowsocksR Plus+:重点看服务器节点、运行模式、GFWList / 大陆白名单、DNS 设置、ss-redir / v2ray / xray 进程是否存在。
  • 三类插件不要同时乱开透明代理。小白排错时先只保留一个主插件工作,确认通了再叠加其它插件。
  • Agent 读取配置时必须脱敏,不展示订阅地址、UUID、密码、Token、Key。

插件维修 SOP:先备份,再软维修

维修插件不是上来重装。先把配置备份下来,再查服务、进程、端口、订阅、日志。只有确认是插件卡住、下载失败或进程异常时,才做一次单插件软重启。

  1. 先备份基础网络和插件配置:`openwrt-ssh backup all`。
  2. 查总状态:`openwrt-ssh plugin-status`,看服务是否存在、是否运行、有没有相关进程和监听端口。
  3. 查订阅:`openwrt-ssh subscriptions`,看订阅配置和更新日志是否异常。
  4. 查脱敏配置:`openwrt-ssh plugin-config openclash` 或 `plugin-config passwall`。
  5. 查最近日志:`openwrt-ssh plugin-logs openclash`。
  6. 只做软维修:一次只运行一个 `openwrt-ssh plugin-repair openclash`、`passwall` 或 `ssr`。
  7. 维修后再验证 DNS、代理状态和客户端访问,不要连续重启多个插件。
openwrt-ssh backup all
openwrt-ssh plugin-status
openwrt-ssh subscriptions
openwrt-ssh plugin-logs openclash
openwrt-ssh plugin-repair openclash
openwrt-ssh dns
openwrt-ssh proxy

常见问题对照

  • 全网都断:优先看 WAN、拨号、网关、DHCP,不要一上来改 OpenClash。
  • 国内能开、国外打不开:优先看代理插件、订阅节点、规则模式、DNS 分流。
  • 只有手机不行:先看手机拿到的 IP、网关、DNS,确认是否连错 Wi-Fi 或用了私有 DNS。
  • OpenCode 无法 SSH:优先看设备 IP、端口 22、用户名、SSH 服务是否开启、known_hosts 是否需要确认、是否只有密码登录。
  • OpenCode 无法输入密码:不要硬让它输密码,改用 SSH Key、~/.ssh/config Host 别名,或让真人先完成一次登录。
  • 订阅导入失败:先用浏览器访问订阅地址,再看转换目标格式,最后看插件日志。
  • 后台进不去:先直连管理口或同网段电脑,不要继续远程套娃修改。

给排错服务的资料清单

  • 网络拓扑图:哪台是主路由、哪台是旁路由、每台设备的管理 IP。
  • 故障范围:所有设备不行,还是某几个设备不行;国内不行,还是国外不行。
  • 最近改动:刚更新了插件、导入订阅、改了 DNS、换了光猫或改了 DHCP。
  • OpenCode SSH 状态:普通终端能否连接、报错原文、设备 IP、端口、用户名、是否已配置 SSH Key,密码和私钥内容不要发。
  • 只读检查结果:路由表、DNS、插件日志、订阅错误提示,敏感信息先打码。
  • 可接受的维护窗口:什么时候可以重启、什么时候不能影响业务。

OpenCode 无法 SSH 或无法输入密码怎么办

OpenCode、Codex、Claude Code 这类 CLI Agent 更适合调用固定工具,不适合卡在 SSH 密码输入、首次 host key 确认或二次验证页面。长期推荐 SSH Key;如果 OpenCode 当前用的是 `sshpass`,也要把密码放在 `SSHPASS` 环境变量里,让 `openwrt-ssh` 走固定动作。

  1. 先确认设备允许 SSH:OpenWrt / iStoreOS 后台开启 SSH,默认端口通常是 22,用户名常见是 root。
  2. Mac 安装 `openwrt-ssh`,Windows 安装 `openwrt-ssh.ps1`,都使用同一个 Host 别名 `openwrt-router`。
  3. 优先由真人完成 SSH Key 写入和首次 host key 确认,后续 OpenCode 不再接触密码。
  4. 如果只能先用密码登录,OpenCode 可用 `sshpass`,但必须使用 `OPENWRT_USE_SSHPASS=1` 和 `SSHPASS` 环境变量,不要把密码写进命令参数。
  5. OpenCode 只调用工具动作:`ping`、`status`、`network`、`dns`、`proxy`、`subscriptions`、`plugin-status`、`plugin-config`、`plugin-logs`、`plugin-repair`、`logs`、`config`、`backup`、`all`。
  6. 工具内部使用 `BatchMode=yes`,如果 SSH Key 没配好会快速失败,不会让 OpenCode 卡在密码输入。
  7. 启用 `sshpass` 模式时工具会改用非交互密码登录;用完立刻 `unset SSHPASS OPENWRT_USE_SSHPASS`。
  8. 如果报 `Permission denied`,检查用户名、Key 是否复制到设备、文件权限、设备是否禁止 root 登录。
  9. 如果报 `Host key verification failed`,先人工确认设备确实是自己的路由器,再处理 known_hosts,不要让 Agent 盲目删除记录。
# SSH Key 模式:OpenCode 后续应该调用工具,而不是直接 ssh
openwrt-ssh ping
openwrt-ssh status
openwrt-ssh network
openwrt-ssh dns
openwrt-ssh proxy
openwrt-ssh subscriptions
openwrt-ssh plugin-status
openwrt-ssh plugin-config openclash
openwrt-ssh plugin-logs openclash
openwrt-ssh backup all
openwrt-ssh all

# sshpass 过渡模式:只用环境变量,不要用 sshpass -p 明文密码
export OPENWRT_USE_SSHPASS=1
export SSHPASS='你的路由器密码'
openwrt-ssh ping
openwrt-ssh status
unset SSHPASS OPENWRT_USE_SSHPASS

除了 openwrt-ssh,还有哪些 SSH 工具

`openwrt-ssh` 是给 Agent 调用的包装器,不是唯一 SSH 工具。小白可以按使用者来选:真人排错用图形工具,Agent 排错用可脚本化工具,文件备份用 SFTP/SCP 工具。

  • OpenSSH:macOS、Linux、Windows 11 都常见,适合 `ssh`、`scp`、`ssh-copy-id`、`~/.ssh/config`,也是最适合 Agent 自动化的底层工具。
  • sshpass:OpenCode 密码登录常用工具,适合过渡期;必须用 `SSHPASS` 环境变量,不要用 `sshpass -p 明文密码`。
  • PuTTY / plink:Windows 老牌 SSH 工具;`plink -batch` 适合脚本化,PuTTY 图形端适合真人排错。
  • WinSCP:适合 Windows 小白上传下载配置备份、导出日志、复制 OpenClash 配置文件。
  • MobaXterm:Windows 下集成 SSH、SFTP、终端和常用网络工具,适合真人远程维护。
  • Termius:适合手机、平板和多设备同步连接配置,适合真人临时看状态,不适合把密码交给 Agent。
  • Tabby:跨平台终端和 SSH 管理器,界面友好,适合长期管理多台设备。
  • XPipe:偏连接管理和系统运维工作台,适合把 SSH、容器、服务器连接整理成可视化入口。

第一次要给 OpenCode 的 SSH 工具

把工具放进本机后,OpenCode 的任务里就可以明确写:不要直接 ssh,只调用这个工具。SSH Key 模式会用 `BatchMode=yes` 快速失败;如果你明确启用 `sshpass` 模式,工具会通过 `SSHPASS` 环境变量完成密码登录。

  • Mac / Linux 工具地址:https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh
  • Windows PowerShell 工具地址:https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh.ps1
  • 工具说明:https://thinktank.1a1api.top/tools/openwrt-ssh/README.md
  • 默认 Host 别名:openwrt-router;也可以用环境变量 OPENWRT_HOST 覆盖。
  • 密码过渡模式:设置 OPENWRT_USE_SSHPASS=1 和 SSHPASS;长期仍建议改 SSH Key。
  • 允许动作:ping、status、network、dns、proxy、subscriptions、plugin-status、plugin-config、plugin-logs、plugin-repair、logs、config network、config dhcp、config firewall、backup base、backup plugins、backup all、all。
给 OpenCode 的首次任务:
你不要直接 ssh,也不要把密码写进命令参数。请先检查本机是否有 openwrt-ssh 工具。Mac/Linux 用 openwrt-ssh;Windows 用 powershell -ExecutionPolicy Bypass -File ~/bin/openwrt-ssh.ps1。如果我明确说当前用 sshpass,请只读取 SSHPASS 环境变量,不要使用 sshpass -p。先运行 ping、status、plugin-status、subscriptions。如果 ping 失败,只解释 SSH Key、sshpass、Host openwrt-router、known_hosts、OpenWrt SSH 服务这几类原因,不要保存或猜测密码。如果需要维修插件,先 backup all,再一次只运行一个 plugin-repair。

Mac 环境:安装 openwrt-ssh 工具

在 macOS 上,把 `openwrt-ssh` 放进 `~/bin`,再完成 SSH Key 和 `openwrt-router` Host 别名。之后 OpenCode 只需要运行 `openwrt-ssh status` 这类命令。

  1. 确认 OpenWrt 的 SSH 服务开启,记下路由器 IP,例如 `192.168.1.1`。
  2. 下载站内 `openwrt-ssh` 工具并放到 `~/bin`。
  3. 在 Mac 终端生成专用 SSH Key,不要复用你登录服务器或 GitHub 的主力 Key。
  4. 把公钥写入 OpenWrt 的 `/etc/dropbear/authorized_keys`。这一步可能需要你手动输入一次路由器密码。
  5. 写入 `~/.ssh/config` 的 `Host openwrt-router` 别名。
  6. 用 `openwrt-ssh ping` 和 `openwrt-ssh status` 验证 OpenCode 可直接调用工具。
mkdir -p ~/bin ~/.ssh && chmod 700 ~/.ssh
curl -fsSL https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh -o ~/bin/openwrt-ssh
chmod +x ~/bin/openwrt-ssh
case ":$PATH:" in *":$HOME/bin:"*) ;; *) echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc; export PATH="$HOME/bin:$PATH" ;; esac
ssh-keygen -t ed25519 -C "opencode-openwrt" -f ~/.ssh/openwrt_opencode
cat ~/.ssh/openwrt_opencode.pub | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
cat >> ~/.ssh/config <<'EOF'
Host openwrt-router
  HostName 192.168.1.1
  User root
  IdentityFile ~/.ssh/openwrt_opencode
  IdentitiesOnly yes
  StrictHostKeyChecking accept-new
EOF
openwrt-ssh ping
openwrt-ssh status

Windows 环境:安装 openwrt-ssh.ps1 工具

在 Windows 上,把 `openwrt-ssh.ps1` 放到 `%USERPROFILE%\bin`,再完成 SSH Key 和 `openwrt-router` Host 别名。之后 OpenCode 只需要运行这个 PowerShell 工具。

  1. 先在 PowerShell 执行 `ssh -V`,确认 Windows 已启用 OpenSSH Client。
  2. 下载站内 `openwrt-ssh.ps1` 工具并放到 `%USERPROFILE%\bin`。
  3. 生成专用 SSH Key,放在 `%USERPROFILE%\.ssh\openwrt_opencode`。
  4. 把公钥追加到 OpenWrt 的 `/etc/dropbear/authorized_keys`。这一步可能需要你手动输入一次路由器密码。
  5. 把 `Host openwrt-router` 写入 `%USERPROFILE%\.ssh\config`。
  6. 用 `openwrt-ssh.ps1 ping` 和 `openwrt-ssh.ps1 status` 验证 OpenCode 可直接调用工具。
ssh -V
New-Item -ItemType Directory -Force "$env:USERPROFILE\bin" | Out-Null
New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null
Invoke-WebRequest -Uri "https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh.ps1" -OutFile "$env:USERPROFILE\bin\openwrt-ssh.ps1"
ssh-keygen -t ed25519 -C "opencode-openwrt" -f "$env:USERPROFILE\.ssh\openwrt_opencode"
type "$env:USERPROFILE\.ssh\openwrt_opencode.pub" | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
@"
Host openwrt-router
  HostName 192.168.1.1
  User root
  IdentityFile ~/.ssh/openwrt_opencode
  IdentitiesOnly yes
  StrictHostKeyChecking accept-new
"@ | Add-Content "$env:USERPROFILE\.ssh\config"
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" ping
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" status

相关问题

还卡着?

可以把截图、日志、需求单或当前页面链接发到 zhemuy@gmail.com。