Ansible权限被拒绝(公钥),但使用相同密钥的ssh有效

Ansible权限被拒绝(公钥),但使用相同密钥的ssh有效,ssh,ansible,ansible-inventory,ansible-ad-hoc,Ssh,Ansible,Ansible Inventory,Ansible Ad Hoc,我正在Ubuntu 16.x(Ansible版本2.2.1.0和2.2.2.0)上运行这个Ansible临时命令 其中host_别名是ansible hosts文件(定义ec2实例及其.pem文件)中定义的别名 主机文件如下所示: [host_alias] my_host.compute.amazonaws.com private_key_file=/path/to/key/my_key.pem [host_group_name] my_host.compute.amazonaws.com

我正在Ubuntu 16.x(Ansible版本2.2.1.0和2.2.2.0)上运行这个Ansible临时命令

其中host_别名是ansible hosts文件(定义ec2实例及其.pem文件)中定义的别名

主机文件如下所示:

[host_alias]

my_host.compute.amazonaws.com

private_key_file=/path/to/key/my_key.pem
[host_group_name]
my_host.compute.amazonaws.com ansible_ssh_private_key_file=/path/to/key/my_key.pem
我得到这个错误:

private_key_file=/path/to/key/my_key.pem | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname private_key_file=/path/to/key/my_key.pem: Name or service not known\r\n", 
    "unreachable": true
}
my_host.compute.amazonaws.com | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey).\r\n", 
    "unreachable": true
当我使用ssh(由
~/.ssh/config
定义)时,相同的主机和密钥可以正常工作。 我已确保密钥在那里并且具有读取权限。我还尝试在ansible主机文件中设置
ansible\u用户


有什么想法吗?

请检查文档中Ansible的格式

您在名为
host\u alias
的主机组中定义了两台主机:

  • 第一个主机是:
    my_host.compute.amazonaws.com

  • 第二个主机是:
    private\u key\u file=/path/to/key/my\u key.pem

Ansible抱怨无法连接到第二台主机:

无法解析主机名private\u key\u file=/path/to/key/my\u key.pem

它也无法连接到第一台主机,因为未定义SSH密钥:

无法通过ssh连接到主机:权限被拒绝(公钥)


除了错误地将主机名和参数拆分为单独的行之外,您还错误地得到了参数的名称——它应该是
ansible\u ssh\u private\u key\u file

这些参数将在后面的章节中列出


您的库存文件应如下所示:

[host_alias]

my_host.compute.amazonaws.com

private_key_file=/path/to/key/my_key.pem
[host_group_name]
my_host.compute.amazonaws.com ansible_ssh_private_key_file=/path/to/key/my_key.pem
还有你的命令:

ansible host_group_name -a "df -h" -u USER

第二行需要放在 [主机别名]部分。 以上部分仅适用于主机。 一旦你这么做了,试试看

ansible all-m ping


检查是否可以ping主机。

非常感谢techraf!在做了你的改变之后,我不得不再做两件事。在我的ansible cmd上传递-u用户(我知道我可以将其添加到ansible主机文件)。其次,在添加用户后,我得到一个错误,表明名称太长。我似乎记得这就是为什么我必须尝试用一条新的线来打破这些线。我通过使用IP解决了字符长度问题。我可以接受。现在一切都好了。非常感谢。您很可能指的是此问题:。有人提出了一些解决办法。