工作流模板 · 小白
整理 OpenCode 常用 sshpass、OpenSSH、PuTTY/plink、WinSCP、MobaXterm、Termius、Tabby、XPipe 等 SSH 工具的适用场景,并说明怎么安全接入 OpenWrt / iStoreOS 排错。
OpenCode 用 `sshpass` 可以解决密码输入卡住的问题,但长期最好换 SSH Key;真人排错再配 PuTTY、WinSCP、MobaXterm 这类图形工具。
# macOS:安装 sshpass 的常见方式之一
brew tap hudochenkov/sshpass
brew install hudochenkov/sshpass/sshpass
sshpass -V# OpenCode 用 sshpass 过渡登录:先由真人带外核对主机指纹并预置 known_hosts;
# wrapper 强制 StrictHostKeyChecking=yes。密码只放环境变量,异常时也自动清理。
cleanup() { unset SSHPASS OPENWRT_USE_SSHPASS; }
trap cleanup EXIT HUP INT TERM
export OPENWRT_HOST=openwrt-router
export OPENWRT_USE_SSHPASS=1
export SSHPASS='你的路由器密码'
openwrt-ssh ping
openwrt-ssh status
openwrt-ssh plugin-status# Windows PowerShell:如果已安装 sshpass.exe 并在 PATH 中
# 先由真人带外核对主机指纹并预置 known_hosts;wrapper 强制 StrictHostKeyChecking=yes。
$env:OPENWRT_HOST = "openwrt-router"
$env:OPENWRT_USE_SSHPASS = "1"
$env:SSHPASS = "你的路由器密码"
$Tool = "$env:USERPROFILE\bin\openwrt-ssh.ps1"
try {
# 先查看当前策略;Bypass 只对下面的子进程生效,不要持久修改 CurrentUser / LocalMachine
Get-ExecutionPolicy -List
powershell -NoProfile -ExecutionPolicy Bypass -File $Tool ping
if ($LASTEXITCODE -ne 0) { throw 'openwrt-ssh ping failed' }
powershell -NoProfile -ExecutionPolicy Bypass -File $Tool status
if ($LASTEXITCODE -ne 0) { throw 'openwrt-ssh status failed' }
} finally {
Remove-Item Env:\SSHPASS -ErrorAction SilentlyContinue
Remove-Item Env:\OPENWRT_USE_SSHPASS -ErrorAction SilentlyContinue
}# 长期方案:改成 SSH Key
ssh-keygen -t ed25519 -C "opencode-openwrt" -f ~/.ssh/openwrt_opencode
# 首次连接显示 fingerprint 时,先与路由器本机界面或本地控制台显示的主机指纹逐字比对;
# 无法带外核对就停止,不要确认主机密钥,也不要输入 root 密码。
cat ~/.ssh/openwrt_opencode.pub | ssh root@192.168.1.1 "umask 077; 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 yes
EOF
openwrt-ssh ping这段可以直接复制给 OpenCode,让它知道当前 SSH 方案和边界。
你不要直接打开交互式 ssh。当前如果需要密码登录,必须先确认真人已带外核对 SSH 主机指纹并预置 known_hosts;之后只能使用 sshpass 环境变量模式:OPENWRT_USE_SSHPASS=1 和 SSHPASS。不要使用 sshpass -p,不要输出密码,不要把密码写入文件。优先调用 openwrt-ssh ping、status、network、dns、plugin-status、subscriptions、plugin-logs。除 backup 外不要执行修改命令;若建议 plugin-repair,先展示证据、影响、维护窗口和回滚方案并等待我当次明确批准,且你不得设置 OPENWRT_ALLOW_REPAIR。网络运维 Agent 的第一原则是先备份、先只读检查、一次只改一个变量,别让小问题变成全网断线。
订阅转换先确认目标格式,插件维修先备份再查日志;不要把完整订阅链接、UUID、密码和 Token 交给 Agent。
Computer Use 是 ChatGPT Windows 桌面应用中 Work / Codex 的图形界面能力;命令行任务仍用 Codex CLI,Linux 项目仍建议放 WSL2。
只提交定位问题所需的最小材料;Authorization、Cookie、API Key、Token、密码和环境变量值必须全部删除。
仅把删除凭证、客户数据和环境变量值后的必要截图、日志片段、需求说明或当前页面链接发到 zhemuy@gmail.com。