【问题标题】:Running Automation on Google Cloud Virtual Instances using Ansible使用 Ansible 在 Google Cloud 虚拟实例上运行自动化
【发布时间】:2025-12-26 09:10:17
【问题描述】:

我正在尝试仅使用虚拟机的外部 IP 地址远程自动化谷歌云虚拟实例。我可以使用用户名 shishir9159_gmail_com 的命令行 ssh 进入虚拟机。但是如果我使用这样的任何 ansible 命令:

ansible -i hosts -u shishir9159_gmail_com --private-key=~/.ssh/google_compute_engine -m ping all

它会导致以下错误:

"msg": "Failed to connect to the host via ssh: shishir9159@35.202.219.6: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)."

我在我的 ansible.cfg 中添加了一些参数:

host_key_checking = False
ssh_args = -o ControlMaster=no

但根据这篇文章,我认为他们没有多大帮助:
https://serverfault.com/questions/929222/ansible-where-do-preferredauthentications-ssh-settings-come-from

我尝试了很多方法和建议。我有一个服务帐户,但在我看来,这个简单的 ping 命令不需要它。

【问题讨论】:

    标签: ssh google-cloud-platform ansible google-cloud-shell


    【解决方案1】:

    问题在于用户名的下划线。尝试添加不带下划线的用户名或尝试使用引号。

    【讨论】:

    • 这个用户名是通过谷歌云平台从我的电子邮件地址自动生成的。我可以通过这个命令ssh -i ~/.ssh/google_compute_engine shishir9159_gmail_com@35.202.219.6 ssh 进入 vm 实例。这个用户名提供了对 Virtual box Instances 的权限。无论如何我可以通过 gcp 重命名提供的用户名吗?
    • 此用户名代表 GCP 赋予的凭据。这甚至与重命名云外壳用户名无关。恕我直言,您不能仅通过简单的 linux 命令更改 GCP 凭据。
    【解决方案2】:

    我通过在 hosts 文件中添加 ansible_ssh_useransible_ssh_pass 解决了这个问题。这篇文章包含解决方案。 ansible SSH connection fail

    【讨论】:

    • 您的问题和答案让我感到困惑:您尝试使用公钥进行连接,但在回答中您指的是密码 ssh 身份验证。请更新您的问题和/或答案以澄清。
    • --private-key=~/.ssh/google_compute_engine 这指的是我正在使用的私钥文件。而公钥认证需要ssh key。
    最近更新 更多