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

SSH连接GCP服务器出现Permission denied (publickey)报错如何解决

GCP实例SSH连接报Permission denied (publickey)修复方案

以下是你已尝试操作之外的高概率故障点,按优先级排查:

  • 检查OS Login开关冲突
    进入GCP控制台对应实例的元数据配置页,查找键为enable-oslogin的配置项:如果值为TRUE,你手动上传的所有项目级、实例级自定义SSH密钥会完全失效。两种修复方式二选一:要么将该值改为FALSE后重新配置公钥,要么直接在本地安装gcloud SDK后执行gcloud compute ssh <你的实例名> --zone=<实例所属可用区>,命令会自动完成OS Login模式下的密钥同步与连接配置,无需手动传公钥。
  • 检查实例级密钥拦截配置
    在实例详情的SSH密钥配置栏,确认是否勾选了「阻止项目级SSH密钥」选项:如果勾选了,你在项目公共元数据里添加的所有公钥都不会被实例读取,必须把公钥填写到实例单独的SSH密钥配置栏中才能生效,不要加错配置位置。
  • 修复SSH相关路径权限错误
    这是手动配置密钥后最常见的故障原因,权限不符合要求时sshd会直接判定文件不安全、拒绝读取密钥信息,最终抛出公钥认证错误。优先用GCP控制台自带的浏览器SSH功能登录实例(该功能不依赖手动配置的公钥规则),登录后执行以下命令修复权限,将<your-login-username>替换为你实际用来登录的用户名:
    chmod 755 /home/<your-login-username>
    chmod 700 /home/<your-login-username>/.ssh
    chmod 600 /home/<your-login-username>/.ssh/authorized_keys
    chown -R <your-login-username>:<your-login-username> /home/<your-login-username>/.ssh
    
  • 校验sshd服务配置
    同样通过浏览器SSH登录实例,检查/etc/ssh/sshd_config配置项:
    • 确认PubkeyAuthentication值为yes
    • 确认AuthorizedKeysFile路径配置为默认的.ssh/authorized_keys .ssh/authorized_keys2,不要指向不存在的路径
    • 如果你之前修改过SSH默认端口,本地连接时必须加-p <自定义端口>参数指定端口,不要默认连22端口
      配置修改完成后执行systemctl restart sshd重启服务生效。
  • 确认磁盘扩容后状态
    执行df -h查看根分区使用率,如果根分区使用率100%,sshd无法读取认证文件、写入临时日志也会报公钥认证错误,清理冗余日志、无用文件释放至少100M以上空间即可恢复。

只要防火墙规则放开了SSH对应端口的入方向流量即可,冗余防火墙规则不会导致公钥认证报错,无需反复调整防火墙配置。

内容的提问来源于stack exchange,提问作者Bibek Raj Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:48:18