遇到 `Permission denied` 应该先查什么?

先区分是“控制机本地权限”还是“目标机 SSH / sudo 权限”。

最常见的三类场景:

  1. dbbotctl env setup 失败,提示无法写入 ~/.bashrc/usr/bin/sshpass 或其他本地路径。
  2. Ansible 连不上目标机,报 Permission denied (publickey,password)
  3. 登录目标机后仍然没有权限写数据目录、安装包或 systemd 服务。

建议按这个顺序排查:

  1. 先在控制机直接执行:
ssh <user>@<target_ip>

如果这一步都失败,先修 SSH 账号、密码、密钥或 known_hosts

  1. 再检查 inventory 中的:
  • ansible_user
  • ansible_ssh_pass
  • 是否需要 become
  1. 如果是控制机本地初始化失败,确认当前用户是否有权限:
  • 修改自己的 shell 配置文件
  • 在 Linux 上写入 /usr/bin/sshpass
  • 安装 python3、SELinux Python 绑定等依赖
  1. 如果是目标机目录权限不足,优先核对目标机是否应该使用 root,或是否已经正确配置 sudo / become。

补充建议: