macOS 上为什么还会报 `sshpass` 错误?

这是 macOS 控制机最容易踩的坑之一。原因通常不是 dbbot 没写文档,而是 macOS 和 Linux 的 sshpass 处理路径本来就不同。

先看这两点:

  1. dbbot 随包自带的 sshpass-x64 只面向 Linux x86_64,不会直接拿来给 macOS 用。
  2. 如果 inventory 里写了 ansible_ssh_pass,Ansible 仍然需要本机可执行的 sshpass;否则就会报 sshpass not foundto use the 'ssh' connection type with passwords, you must install the sshpass program

推荐处理方式:

  1. 优先改成 SSH key 登录,避免在 macOS 控制机上依赖 sshpass
  2. 如果必须走密码认证,先安装 Homebrew,再执行:
brew install hudochenkov/sshpass/sshpass
  1. 安装后重新执行:
/usr/local/dbbot/bin/dbbotctl doctor

如果仍然报错,再看这两类情况:

  1. Host Key checking is enabled:这是 SSH 主机指纹校验问题,不是 sshpass 本身能绕过的。先用 ssh <user>@<host> 完成指纹确认,或改用 SSH key。
  2. password_hash / passlib 相关错误:这是 macOS 控制机缺少 passlib,先执行 xcode-select --install,再重新跑 dbbotctl env setup

相关文档: