You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Compute Engine虚拟机SSH登录提示Permission denied问题排查求助

解决GCE SSH登录Permission denied问题的常见排查步骤

我之前也碰到过一模一样的问题,给你列几个最常见的排查点,按顺序试下来应该能解决:

  • 检查私钥文件权限:SSH对私钥的权限要求非常严格,必须设置为600(只有所有者可读可写),否则会直接拒绝。执行以下命令修正权限:

    chmod 600 ~/.ssh/[你的私钥文件名]
    chmod 700 ~/.ssh
    

    这是最容易忽略的坑,很多人生成密钥后直接使用,没注意权限问题导致报错。

  • 验证公钥格式与内容:添加到GCE实例的公钥必须是完整的ssh-rsa [公钥字符串] [用户名]格式,末尾的用户名要和你登录时使用的[username]完全一致。你可以通过cat ~/.ssh/[你的公钥文件名]复制完整内容,直接粘贴到GCE控制台的SSH密钥列表中,避免手动修改导致格式错误。

  • 确认登录用户名匹配:GCE默认不允许root用户直接登录,你登录时使用的用户名必须和生成密钥时-C参数指定的用户名一致,或者是你在GCE实例中已经创建的用户。比如你生成密钥时用了-C pranay,那登录命令应该是ssh -i 私钥文件 pranay@实例IP,用root登录会直接被拒绝。

  • 检查防火墙规则:确保GCE实例所在的防火墙允许22端口的入站流量。默认情况下GCE会有一条default-allow-ssh的规则,但如果这条规则被修改或删除,就会导致无法连接。你可以在GCE控制台的「防火墙规则」页面查看是否存在这条规则,且目标覆盖你的实例。

  • 重新通过gcloud命令添加密钥:有时候手动添加到实例的密钥可能没生效,试试用gcloud命令关联密钥:

    gcloud compute os-login ssh-keys add --key-file=~/.ssh/你的公钥文件
    

    这个命令会自动将密钥关联到你的Google账号对应的OS登录用户,比手动添加更可靠。

  • 确认私钥与公钥对应:别搞混了私钥和公钥!登录时使用的是不带.pub后缀的私钥,添加到GCE的是带.pub的公钥。你可以用以下命令从私钥生成公钥,和你添加到GCE的版本对比:

    ssh-keygen -y -f 你的私钥文件
    

    如果两者不一致,说明你用错了私钥,或者公钥复制有误。

内容的提问来源于stack exchange,提问作者Pranay Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:30:51