macOS 上为什么还会报 `sshpass` 错误?
这是 macOS 控制机最容易踩的坑之一。原因通常不是 dbbot 没写文档,而是 macOS 和 Linux 的 sshpass 处理路径本来就不同。
先看这两点:
dbbot随包自带的sshpass-x64只面向 Linuxx86_64,不会直接拿来给 macOS 用。- 如果 inventory 里写了
ansible_ssh_pass,Ansible 仍然需要本机可执行的sshpass;否则就会报sshpass not found或to use the 'ssh' connection type with passwords, you must install the sshpass program。
推荐处理方式:
- 优先改成 SSH key 登录,避免在 macOS 控制机上依赖
sshpass。 - 如果必须走密码认证,先安装 Homebrew,再执行:
brew install hudochenkov/sshpass/sshpass
- 安装后重新执行:
/usr/local/dbbot/bin/dbbotctl doctor
如果仍然报错,再看这两类情况:
Host Key checking is enabled:这是 SSH 主机指纹校验问题,不是sshpass本身能绕过的。先用ssh <user>@<host>完成指纹确认,或改用 SSH key。password_hash/passlib相关错误:这是 macOS 控制机缺少passlib,先执行xcode-select --install,再重新跑dbbotctl env setup。
相关文档: