Ansible 权限被拒绝(public 密钥)但使用相同密钥的 ssh 有效
Ansible Permission denied (public key) but ssh using same key works
我是 运行 Ubuntu 16.x(ansible 版本 2.2.1.0 和 2.2.2.0)上的这个 Ansible ad-hoc 命令
ansible host_alias -a "df -h" -u USER
其中 host_alias 是定义的 ansible 主机文件(定义 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).
除了将主机名和参数分成不同行的错误之外,您还弄错了参数名称——它应该是 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 all -m ping
检查是否可以 ping 通主机。
我是 运行 Ubuntu 16.x(ansible 版本 2.2.1.0 和 2.2.2.0)上的这个 Ansible ad-hoc 命令
ansible host_alias -a "df -h" -u USER
其中 host_alias 是定义的 ansible 主机文件(定义 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).
除了将主机名和参数分成不同行的错误之外,您还弄错了参数名称——它应该是 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 all -m ping
检查是否可以 ping 通主机。