Ansible-Playbook:无法通过 ssh 连接到主机:没有这样的身份
Ansible-Playbook: Failed to connect to the host via ssh: no such identity
我正在尝试 运行 在我尝试使用 Ansible 剧本设置的某些服务器上的剧本。为此,我为开发清单创建了一个主机文件:
all:
servers:
hosts:
my_server1:
my_server2:
vars:
ansible_ssh_user: myremoteuser
ansible_ssh_private_key_file: "{{ private_key }}"
我像这样从我的保险库中填充 private_key
: private_key: "{{vault_private_key | b64decode}}"
vault_private_key
是我生成的 base64 编码的私有 2048 rsa 密钥,我可以看到它在错误消息中正确解码,如下所示:
"msg": "Failed to connect to the host via ssh: no such identity: -----BEGIN OPENSSH PRIVATE KEY-----\n
我使用以下命令生成了 ssh 密钥:
ssh-keygen -b 2048 -t rsa -f myremoteuser_key -C myremoteuser
当我 ssh 进入 my_server1
或 2
时,我可以验证 /home/myremoteuser/.ssh/authorized_keys
是否在其中生成了 public 密钥,我通过 greping public 关键文本。
我可以通过命令行 ssh。尝试设置私钥时我是否遗漏了什么?
我不能完全从你的问题中分辨出来 -- 你能确认你没有混淆私钥文件 path 和私钥文件 contents?
您正在将私钥写入磁盘吗?如果是这样,您是否将权限设置为 0600? SSH 不会读取权限太宽泛的私钥文件。
我怀疑您 运行 遇到权限问题。
为什么不直接使用 template
任务来填充私钥的内容?参见 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html
您可以将变量放入您的模板文件中,{{vault_private_key | b64decode}}
我正在尝试 运行 在我尝试使用 Ansible 剧本设置的某些服务器上的剧本。为此,我为开发清单创建了一个主机文件:
all:
servers:
hosts:
my_server1:
my_server2:
vars:
ansible_ssh_user: myremoteuser
ansible_ssh_private_key_file: "{{ private_key }}"
我像这样从我的保险库中填充 private_key
: private_key: "{{vault_private_key | b64decode}}"
vault_private_key
是我生成的 base64 编码的私有 2048 rsa 密钥,我可以看到它在错误消息中正确解码,如下所示:
"msg": "Failed to connect to the host via ssh: no such identity: -----BEGIN OPENSSH PRIVATE KEY-----\n
我使用以下命令生成了 ssh 密钥:
ssh-keygen -b 2048 -t rsa -f myremoteuser_key -C myremoteuser
当我 ssh 进入 my_server1
或 2
时,我可以验证 /home/myremoteuser/.ssh/authorized_keys
是否在其中生成了 public 密钥,我通过 greping public 关键文本。
我可以通过命令行 ssh。尝试设置私钥时我是否遗漏了什么?
我不能完全从你的问题中分辨出来 -- 你能确认你没有混淆私钥文件 path 和私钥文件 contents?
您正在将私钥写入磁盘吗?如果是这样,您是否将权限设置为 0600? SSH 不会读取权限太宽泛的私钥文件。
我怀疑您 运行 遇到权限问题。
为什么不直接使用 template
任务来填充私钥的内容?参见 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html
您可以将变量放入您的模板文件中,{{vault_private_key | b64decode}}