Ansible权限被拒绝(公钥),但使用SSH相同的密钥作品
我在Ubuntu上运行16.x(2.2.1.0 2.2.2.0版本ansible。和)这个Ansible的ad-hoc命令Ansible权限被拒绝(公钥),但使用SSH相同的密钥作品
ansible host_alias -a "df -h" -u USER
其中host_alias是定义的ansible hosts文件(定义了ec2实例及其.pem文件)。
主机文件看起来像这样:
[host_alias]
my_host.compute.amazonaws.com
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_user
。
任何想法?
请在文档中查看Ansible inventory file的格式。
您已经定义在名为host_alias
主机组的两个主机:
第一主机:
my_host.compute.amazonaws.com
,第二主机:
private_key_file=/path/to/key/my_key.pem
。
Ansible抱怨它不能连接到第二主机:
Could not resolve hostname private_key_file=/path/to/key/my_key.pem
它也无法连接到第一个主机,因为SSH密钥没有定义:
Failed to connect to the host via ssh: Permission denied (publickey).
除了将主机名和参数拆分成单独的行的错误之外,您还得到了错误的参数名称 - 它是s应该是ansible_ssh_private_key_file
。
参数在the same document的后面章节中列出。
你的清单文件应该是这样的:
[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
第二行需要在 [host_alias]部分被丢弃。 以上部分仅适用于主机。 一旦你这样做尝试
ansible所有-m平
,以检查是否可以ping主机。
非常感谢你techraf!在做出改变之后,我必须做更多的事情。通过一个-u USER在我的我可靠的cmd上(我知道我可以将它添加到ansible hosts文件中)。其次,在添加用户之后,我收到一个错误,表明名称太长。我似乎记得这就是为什么我必须尝试用一条新线来分手。我通过使用IP修复了字符长度问题。我可以忍受这一点。现在都好。谢谢! – craig399
最有可能你指的是这个问题:[ssh抛出'unix域套接字“太长”'错误](https://github.com/ansible/ansible/issues/11536)。有一些解决方案建议。 – techraf