我在这个论坛上看到了很多,但没有一个答案对我有帮助。
我正在尝试运行一个ansible playbook,这在我的Debian PC上运行良好。现在我已经转移到Ubuntu 16.04它不能正常工作。我被许可拒绝公钥错误。
我假设这是因为我正在运行sudo ansible-playbook。
然后尝试使用我的root用户的公钥,而不是我试图回答的服务器上的公钥。
如何将ansible-playbook作为sudo运行但是使用当前用户的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]许可被拒绝:你'/ home / chrisl / ansible / keys.retry'
我也试过这个,你可以看到会发生什么......
答案 0 :(得分:1)
在您的用户ansible-playbook
以用户root
运行第一个命令chris
之后,该执行左(创建)属于用户root
下的文件chris
的主文件夹。然后下次运行,因为用户chris
无法修改属于root
的文件。
你应该做的是:
--private-key=/path/to/key
,如果它是无密码的。root
使/home/chris
下的所有文件属于用户chris
及其默认组:sudo chown -R chris:chris /home/chris