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_server12 时,我可以验证 /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}}