尽管 SSH 连接成功,但通过 Ansible(在 GCP VM 上运行)管理 GCP 机器时出现权限被拒绝(公钥)错误

尽管 SSH 连接成功,但通过 Ansible(在 GCP VM 上运行)管理 GCP 机器时出现权限被拒绝(公钥)错误

我通过 Terraform 将两台机器部署到 GCP。我们称它们为控制主机和目标主机。我想通过安装在控制主机上的 Ansible 来管理目标主机。不幸的是,无论我做什么,我都会不断收到以下错误:

10.128.100.3 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey).",
    "unreachable": true
}

这个问题让我很困惑,因为从控制主机到目标主机 ssh 是可以毫无问题的。我认为如果“原始”ssh 是可行的,那么通过 Ansible 使用它也是可行的。

以下是我做过和尝试过的事情的列表:

  1. 在控制主机上安装 Ansible。
  2. 在控制主机上生成密钥对。复制公钥。
  3. 在目标主机上 SSH。打开./.ssh/authorized_keys。粘贴公钥。
  4. 执行ansible all -vvv -m ping。我收到了上面提到的错误。
  5. 打开/etc/ansible/ansible.cfg。添加以下内容:
[defaults]
remote_user = gcp_user
host_key_checking = False
ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
private_key_file = /home/gcp_user/.ssh/t_k

(t_k 是密钥的名称)

  1. 再次运行ansible all -vvv -m ping。同样的错误。
  2. 运行ansible all -vvv -m ping --key-file=/home/gcp_user/.ssh/t_k。同样的错误。
  3. 打开/etc/ansible/hosts。添加以下内容:
10.128.100.3 ansible_ssh_private_key_file=/home/gcp_user/.ssh/t_k

相同的故事。

服务器端的 SSH 日志显示以下内容: Connection closed by authenticating user gcp_user 10.128.100.2 port 34470 [preauth]

我遵循了以下帖子中的建议,但都无济于事:

  1. https://stackoverflow.com/questions/64681944/create-and-setup-gcp-vms-with-ansible-ssh-permission-denied-publickey
  2. https://stackoverflow.com/questions/55897136/ansible-failed-to-connect-to-the-host-via-ssh-permission-denied-publickey
  3. https://stackoverflow.com/questions/57424995/ansible-remote-user-root-ssh-permission-denied-publickey
  4. https://stackoverflow.com/questions/33280244/ssh-error-permission-denied-publickey-password-in-ansible

相关内容