我正在尝试使用Ansible设置计算机。我必须使用私钥而不是密码通过ssh连接到它。
这是我的stock.txt文件的内容:
target ansible_host=<ip_address> ansible_ssh_private_key_file=~/.ssh/<private_key_name>.pem
这是我的playbook.yaml文件的内容:
-
name: Playbook name
hosts: target
tasks:
<task_list>
当我执行命令ansible-playbook <playbook_name>.yaml -i inventory.txt
时,出现以下错误:
fatal: [target]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey).\r\n", "unreachable": true}
我还尝试执行以下命令:ansible-playbook <playbook_name>.yaml --private-key=~/.ssh/<private_key_name>.pem -i inventory.txt
,在ansible_ssh_private_key_file
文件中没有inventory.txt
属性。
注意:我可以使用命令 ssh -i <private_key_name>.pem <username>@<ip_address>
连接到计算机。
如何解决此问题?
答案 0 :(得分:1)
我怀疑您正在以其他用户身份进行连接。在上面的示例中,您在ssh检查期间使用了<user>@<host>
,但没有配置ansible_user=...
字段。尝试以这种方式在主机文件中提供用户名。