2017-02-23 64 views
0

我在这个论坛上看到过很多,但没有一个答案对我有帮助。有问题的许可问题

我试图运行一个合理的剧本,这在我的Debian PC上运行良好。现在我已经转移到Ubuntu 16.04,它不工作。我获得拒绝公钥错误的权限。

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

然后,这会尝试使用我的根用户的公钥,而不是我想要的服务器上的公钥。

我该如何运行ando-playbook作为sudo,但使用我当前用户的ssh密钥?

如果我作为须藤跑我得到

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

如果我不跑作为须藤我得到

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

[警告]:无法创建文件重试“的/ home/chrisl/ansible/keys.retry”。 [错误13]许可被拒绝:U '/家庭/ chrisl/ansible/keys.retry'

我也尝试这样做,你可以看到发生了什么....

Picture Here with errors

+0

第二个示例中的设备表示您的“chrisl”用户帐户无法完全读取/写入/更新'/home/chrisl/ansible/keys.retry'文件。你能否确认你的“chrisl”账户可以查看/读取/写入该文件?我不认为这与你的问题直接相关,但可能会在稍后影响它。 –

+1

这是一个真正的问题吗?您的chris帐户显然有一些权限问题。你可能想尝试-H标志为sudo。 – Kyslik

回答

0

AFTER您从用户chris运行第一条命令ansible-playbook(用户root),该执行在归属文件夹chris下留下(创建)属于用户root的文件。然后下一次运行,因为用户chris无法修改属于root的文件。

你应该做的是:

  • 确定所需的SSH方法/必要在这里使用 - SSH代理,或无密码默认SSH密钥,B/C的第一个命令失败,原因是关键问题。如果无密码,您也可以传递参数--private-key=/path/to/key
  • 修复:当用户root化妆/home/chris下的所有文件都属于用户chris其默认组:sudo chown -R chris:chris /home/chris
  • ,如果你有大量的数据,上述命令可能需要一些时间
  • 从具体运行剧本,同一个用户,并且不要混合。如果你正在混合 - 学习如何正确地做到这一点。
  • 学习/读取/实验关于unix权限,身份切换,环境等等,b/c这不是一个“可行的权限”问题,但“chris理解unix权限”问题,这是可以的,给你'刚刚开始与UNIX/Linux

祝你好运。