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

GCP虚拟机向GitHub推送代码时出现Permission denied(publickey)问题

解决GCP虚拟机中Git Push到GitHub的公钥权限问题

问题现象

执行git push时出现报错:

git push
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

已确认的配置信息

  1. Git仓库配置:
git config --list
user.email=my.name@gmail.com
user.name=My Name
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=git@github.com:myname/jenkinskode.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.main.remote=origin
branch.main.merge=refs/heads/main
  1. ~/.ssh目录文件权限:
-rw------- 1 miki miki  599 Sep 20 10:34 authorized_keys
-rw------- 1 miki miki 3243 Sep 22 09:16 id_github
-rw-r--r-- 1 miki miki  752 Sep 22 09:16 id_github.pub
-rw-r--r-- 1 miki miki  888 Sep 22 09:11 known_hosts
  1. ssh -Tv git@github.com输出(关键异常:未尝试自定义命名的id_github密钥):
ssh -Tv git@github.com
...
debug1: Next authentication method: publickey
debug1: Trying private key: /home/miki/.ssh/id_rsa
debug1: Trying private key: /home/miki/.ssh/id_dsa
debug1: Trying private key: /home/miki/.ssh/id_ecdsa
debug1: Trying private key: /home/miki/.ssh/id_ed25519
debug1: No more authentication methods to try.
git@github.com: Permission denied (publickey).
  1. ssh-agent状态:
ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-FhrOT4qqIvV7/agent.17863; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17864; export SSH_AGENT_PID;
echo Agent pid 17864;

解决方案

1. 临时指定密钥验证有效性

先确认密钥本身可正常连接GitHub:

ssh -i /home/miki/.ssh/id_github -Tv git@github.com

若输出出现Hi myname! You've successfully authenticated, but GitHub does not provide shell access.,说明密钥本身有效,只是SSH未自动调用它。

2. 将密钥添加到ssh-agent

首先加载ssh-agent环境变量(之前的ssh-agent输出仅显示变量,未实际生效):

eval $(ssh-agent -s)

然后添加自定义密钥:

ssh-add /home/miki/.ssh/id_github

执行后再次测试ssh -Tv git@github.com,应能看到SSH尝试id_github密钥并成功认证。

3. 配置SSH Config实现自动调用密钥

为避免每次手动添加,在~/.ssh/config文件中添加以下内容(文件不存在则直接创建):

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_github

保存后确保文件权限合规:

chmod 600 ~/.ssh/config
chmod 700 ~/.ssh

4. 再次核对GitHub公钥配置

登录GitHub账户,进入Settings -> SSH and GPG keys,检查已添加的公钥是否与id_github.pub内容完全一致,注意不要包含多余空格或换行。

5. 测试Git Push

完成以上步骤后,重新执行git push即可正常推送代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:46:57