工作流模板 · 小白

SSH 工具怎么选:OpenCode、OpenWrt 和小白远程排错指南

整理 OpenCode 常用 sshpass、OpenSSH、PuTTY/plink、WinSCP、MobaXterm、Termius、Tabby、XPipe 等 SSH 工具的适用场景,并说明怎么安全接入 OpenWrt / iStoreOS 排错。

  • SSH
  • sshpass
  • OpenCode
  • OpenWrt
  • iStoreOS
  • PuTTY
  • WinSCP
  • MobaXterm
更新于 2026-05-25

一句话结论

OpenCode 用 `sshpass` 可以解决密码输入卡住的问题,但长期最好换 SSH Key;真人排错再配 PuTTY、WinSCP、MobaXterm 这类图形工具。

适用场景

  • OpenCode 需要登录 OpenWrt / iStoreOS,但 SSH 要输入密码
  • 不想一开始折腾 SSH Key,想先用密码跑通只读检查
  • Windows 小白想用图形界面传配置、看日志、备份文件
  • 手机上临时看路由器状态
  • 需要把多个软路由、VPS、旁路由连接统一管理

常见现象

  • OpenCode 提示无法输入密码
  • 普通 `ssh root@192.168.1.1` 能连,但 Agent 卡在密码输入
  • 不知道 `sshpass`、PuTTY、WinSCP、MobaXterm 各自负责什么
  • 把密码写进命令里,担心被日志或截图泄露
  • 路由器能登录但不知道怎么把配置文件下载出来

原因解释

  • SSH 密码登录是交互式的,Agent 很容易卡在输入密码这一步
  • `sshpass` 可以把密码登录变成非交互命令,但密码处理不当会泄露
  • OpenSSH 适合自动化,WinSCP / MobaXterm 更适合真人文件操作和临时维护
  • OpenCode 这类 Agent 应该调用固定动作,不应该拿到无限制 SSH 交互权限
  • 长期运维应该用 SSH Key 和 Host 别名,减少密码复制和误泄露

解决步骤

  1. 先判断使用者:是 OpenCode/Codex 这类 Agent,还是真人自己登录。
  2. Agent 优先用 `openwrt-ssh` 包装器;如果当前只能密码登录,就启用 `sshpass` 模式。
  3. 密码不要写在 `sshpass -p 密码` 参数里,改用 `SSHPASS` 环境变量。
  4. 跑通后尽快改成 SSH Key,并在 `~/.ssh/config` 里写 `Host openwrt-router`。
  5. Windows 真人排错可以补 WinSCP 传文件、PuTTY/MobaXterm 看终端。
  6. 每次给 Agent 前先约束动作范围:只读检查、备份、单插件软维修,不给无限制 shell。
  7. 用完 `sshpass` 后清理环境变量,避免后续命令或截图暴露密码。

可复制命令

# macOS:安装 sshpass 的常见方式之一
brew tap hudochenkov/sshpass
brew install hudochenkov/sshpass/sshpass
sshpass -V
# OpenCode 用 sshpass 过渡登录:密码只放环境变量
export OPENWRT_HOST=openwrt-router
export OPENWRT_USE_SSHPASS=1
export SSHPASS='你的路由器密码'
openwrt-ssh ping
openwrt-ssh status
openwrt-ssh plugin-status
unset SSHPASS OPENWRT_USE_SSHPASS
# Windows PowerShell:如果已安装 sshpass.exe 并在 PATH 中
$env:OPENWRT_HOST = "openwrt-router"
$env:OPENWRT_USE_SSHPASS = "1"
$env:SSHPASS = "你的路由器密码"
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" ping
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" status
Remove-Item Env:\SSHPASS
Remove-Item Env:\OPENWRT_USE_SSHPASS
# 长期方案:改成 SSH Key
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

仍然不行怎么办

  • 如果 macOS 装不上 `sshpass`,优先改 SSH Key;Homebrew 的 sshpass 可能需要额外 tap。
  • 如果 Windows 找不到 `sshpass.exe`,可以先用 PuTTY/plink 或直接做 SSH Key。
  • 如果 OpenWrt 禁用了密码登录,`sshpass` 不会生效,只能用 SSH Key。
  • 如果出现 `Host key verification failed`,先人工确认设备身份,不要让 Agent 自动删 known_hosts。
  • 如果要传配置文件,优先用 WinSCP / scp 下载备份,不要让 Agent 大段复制粘贴敏感配置。
  • 如果是公司或门店网络,别给 Agent 直接重启路由器权限,先约维护窗口。

常见 SSH 工具速查

  • openwrt-ssh:站内包装器,适合 OpenCode/Codex 调用固定动作,支持 SSH Key 和 sshpass 过渡模式。
  • sshpass:OpenCode 密码登录常用工具,把密码登录变成非交互命令;只建议短期过渡。
  • OpenSSH:`ssh`、`scp`、`ssh-keygen`、`~/.ssh/config`,适合自动化和长期维护。
  • PuTTY / plink:Windows 老牌 SSH 工具,`plink -batch` 可以脚本化。
  • WinSCP:Windows 文件传输和配置备份更友好,适合下载 `/etc/config` 或 OpenClash 配置。
  • MobaXterm:Windows 一体化终端,集成 SSH、SFTP 和常用网络工具。
  • Termius:手机和平板临时维护方便,适合真人看状态,不适合交给 Agent 保存密码。
  • Tabby:跨平台终端管理器,适合多设备长期管理。
  • XPipe:偏连接管理和系统运维工作台,适合把 SSH、容器、服务器入口统一整理。

sshpass 使用规则

  1. 只在设备还没配置 SSH Key 时短期使用。
  2. 密码只放 `SSHPASS` 环境变量,不写进命令、不写进提示词、不写进脚本文件。
  3. 不要使用 `sshpass -p 明文密码 ssh ...`。
  4. 只让 Agent 运行固定工具动作,例如 `openwrt-ssh status`、`plugin-status`、`subscriptions`。
  5. 跑通后尽快换成 SSH Key。
  6. 用完执行 `unset SSHPASS OPENWRT_USE_SSHPASS` 或删除 PowerShell 环境变量。

给 OpenCode 的安全提示词

这段可以直接复制给 OpenCode,让它知道当前 SSH 方案和边界。

你不要直接打开交互式 ssh。当前如果需要密码登录,只能使用 sshpass 环境变量模式:OPENWRT_USE_SSHPASS=1 和 SSHPASS。不要使用 sshpass -p,不要输出密码,不要把密码写入文件。优先调用 openwrt-ssh ping、status、network、dns、plugin-status、subscriptions、plugin-logs。除 backup 和我明确授权的 plugin-repair 外,不要执行修改命令。

真人应该装哪些

  • macOS:系统自带 OpenSSH,再按需安装 `sshpass` 过渡;长期用 SSH Key。
  • Windows:先启用 OpenSSH Client;要图形界面就装 WinSCP 和 PuTTY / MobaXterm。
  • 手机:Termius 适合临时查看,但不要把生产密码随便同步到不可信设备。
  • 多设备运维:Tabby 或 XPipe 适合统一管理连接,但仍要用 SSH Key 和最小权限。

相关问题

还卡着?

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