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

Google Cloud实例SSH端口转发遇Permission Denied(public key)问题求助

解决Google Cloud实例SSH端口转发的权限问题

看起来你碰到了两个关联的小问题:主机真实性验证提示和公钥权限拒绝,我来一步步帮你搞定:

1. 先处理主机真实性无法确定的问题

当你第一次用ssh -L命令连接实例时,SSH会弹出类似这样的提示:

The authenticity of host 'instance_external_ip (xxx.xxx.xxx.xxx)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这时候直接输入yes回车确认就行,SSH会把主机密钥记录到~/.ssh/known_hosts文件里,下次连接就不会再弹这个提示了。

如果之前连接过同IP/同名的主机导致密钥冲突,你可以先删掉旧的记录:

ssh-keygen -R instance_external_ip

然后重新执行端口转发命令,按提示确认主机真实性即可。

2. 解决Permission Denied (public key)问题

既然你平时能成功SSH连接实例,大概率是手动执行ssh -L时没用到正确的密钥对。Google Cloud的gcloud工具默认会生成并使用~/.ssh/google_compute_engine这个密钥,而普通ssh命令默认用的是~/.ssh/id_rsa,如果这个密钥没被添加到实例的授权列表里,就会触发权限拒绝错误。

这里有两种解决方法:

方法一:直接指定正确的密钥文件

在ssh -L命令里加上-i参数,明确指定gcloud生成的密钥:

ssh -i ~/.ssh/google_compute_engine -L 16006:127.0.0.1:8080 username@instance_external_ip

方法二:让SSH自动匹配Google Cloud密钥

编辑~/.ssh/config文件(如果没有就新建一个),添加以下配置:

Host instance_external_ip
    IdentityFile ~/.ssh/google_compute_engine
    User username

保存后,下次直接执行ssh -L 16006:127.0.0.1:8080 instance_external_ip,SSH就会自动用正确的密钥连接了。

额外检查点

  • 确保本地私钥文件的权限是600,权限太开放会被SSH拒绝:
    chmod 600 ~/.ssh/google_compute_engine
    
  • 确认你的公钥已经在实例元数据里:登录Google Cloud控制台,找到实例的元数据标签页,查看ssh-keys项里是否有你的公钥内容(用gcloud连接的话,通常会自动上传)。

测试端口转发

搞定上面的问题后,重新执行端口转发命令,没有报错的话,你就可以在本地浏览器访问http://127.0.0.1:16006,应该就能正常访问实例上8080端口的服务了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:27:11