使用gcloud compute SSH连接GCE时卡在认证阶段的求助
解决gcloud compute SSH连接GCE实例停滞无响应的问题
结合你遇到的卡在公钥认证后无响应的情况,以及提供的调试日志和环境信息,我整理了几个针对性的解决方案:
1. 修复缺失的SSH已知主机文件
从调试日志能看到google_compute_known_hosts文件不存在,这可能导致gcloud在验证主机身份时卡住:
# 先创建.ssh目录(如果不存在) New-Item -ItemType Directory -Path C:\Users\hogehoge\.ssh # 创建空的google_compute_known_hosts文件 New-Item -ItemType File -Path C:\Users\hogehoge\.ssh\google_compute_known_hosts
创建完成后再重新尝试连接命令。
2. 统一SSH登录身份(匹配Cloud Shell的tomotomo)
你提到Cloud Shell用tomotomo身份能连接,说明实例的SSH密钥元数据里已经有这个用户的公钥,但本地gcloud默认用hogehoge身份,可能导致认证后权限或匹配问题:
- 临时指定用户名连接:直接在命令里加上
--user参数:gcloud compute --project "first-medium-2****8" ssh --zone "us-east1-b" "instance-2" --user=tomotomo - 添加hogehoge的公钥到实例元数据:
- 打开本地
C:\Users\hogehoge\.ssh\google_compute_engine.pub文件,复制全部内容 - 登录GCP控制台,找到目标实例 -> 编辑 -> 元数据 -> SSH密钥,添加一行格式为
hogehoge:ssh-rsa AAAAB***...的内容(即你复制的公钥) - 保存后再尝试原命令连接
- 打开本地
3. 强制gcloud使用OpenSSH替代Putty
调试日志显示gcloud调用了Putty,可能Putty的配置或兼容性导致停滞,你可以强制gcloud用OpenSSH:
# 临时设置环境变量(当前PowerShell会话有效) $env:CLOUDSDK_SSH_USE_PUTTY = "false" # 之后重新执行你的SSH连接命令 gcloud compute --project "first-medium-2****8" ssh --zone "us-east1-b" "instance-2"
如果需要永久生效,可以在系统环境变量里添加CLOUDSDK_SSH_USE_PUTTY并设置值为false。
4. 其他排查步骤
- 检查实例防火墙规则:确认实例所在的VPC有允许22端口入站的规则(默认的
allow-ssh规则是否存在且启用) - 重启GCE实例:有时候实例的SSH服务可能异常,重启后能恢复正常连接
- 测试网络环境:尝试切换到其他网络(比如手机热点),排除本地防火墙或代理阻止SSH连接的可能
内容的提问来源于stack exchange,提问作者redpawn
相关产品推荐
相关产品推荐

