【问题标题】:Ansible permission problemsAnsible 权限问题
【发布时间】:2017-02-23 16:53:51
【问题描述】:

我在这个论坛上看到了很多,但没有一个答案对我有帮助。

我正在尝试运行 ansible 剧本,这在我的 Debian PC 上运行良好。现在我已经转移到 Ubuntu 16.04 它不工作了。我收到权限被拒绝的公钥错误。

我假设这是因为我正在运行 sudo ansible-playbook。

然后,这将尝试使用我的 root 用户的公钥,该公钥不在我试图 ansible 的服务器上。

如何以 sudo 运行 ansible-playbook,但使用当前用户的 ssh 密钥?

如果我以 sudo 运行,我会得到

fatal: [10.11.8.1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey).\r\n", "unreachable": true}

如果我不以 sudo 身份运行,我会得到

fatal: [10.11.8.1]: FAILED! => {"failed": true, "msg": "Cannot write to ControlPath /home/chrisl/.ansible/cp"}

[警告]:无法创建重试文件“/home/chrisl/ansible/keys.retry”。 [Errno 13] 权限被拒绝:u'/home/chrisl/ansible/keys.retry'

我也试过这个,你可以看看会发生什么......

【问题讨论】:

  • 在第二个示例中,您的“chrisl”用户帐户无法完全读取/写入/更新“/home/chrisl/ansible/keys.retry”文件。您能否确认您的“chrisl”帐户可以查看/读取/写入该文件?我认为这与您的问题没有直接关系,但以后可能会对其产生影响。
  • 这真的是 ansible 问题吗?您的 chris 帐户显然存在一些权限问题。您可能想尝试 sudo 的 -H 标志。

标签: ansible


【解决方案1】:

在您以用户 root 的身份从您的用户 chris 运行第一个命令 ansible-playbook 后,该执行会在 chris 的主文件夹下留下(创建)属于用户 root 的文件。然后下次以用户chris 运行无法修改属于root 的文件。

你应该做的是:

  • 在此处确定您想要/需要使用的 ssh 方法 - ssh-agent 或无密码默认 ssh 密钥,b/c 由于密钥问题,第一个命令失败。你也可以传递参数--private-key=/path/to/key,如果它是无密码的。
  • 修复:作为用户root使/home/chris下的所有文件属于用户chris及其默认组:sudo chown -R chris:chris /home/chris
  • 如果您有大量数据,上述命令可能需要一些时间
  • 从特定的同一用户运行您的剧本,不要混用。如果您正在混音,请了解如何正确混音。
  • 学习/阅读/实验unix权限、身份切换、环境等,b/c这不是“ansible权限”问题,而是“chris理解unix权限”问题,没关系,给你'只是从 unix/linux 开始

祝你好运。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-06-03
    相关资源
    最近更新 更多