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

Windows下Git推送提示Permission Denied(publickey)的问题求助

解决自定义SSH密钥名称导致Git推送权限问题

方法1:配置SSH Config文件(全局生效)

这是最通用的解决方案,让SSH每次连接GitHub时自动使用自定义密钥:

  1. 在用户目录下的.ssh文件夹中创建无后缀的config文件(路径示例:C:\Users\[你的用户名]\.ssh\config)
  2. 写入以下配置内容,替换gh-key为你的自定义密钥文件名:
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/gh-key
  1. 保存文件后,重新执行git push origin master测试效果

方法2:让ssh-agent自动持久化加载密钥(解决重启控制台失效问题)

如果手动执行ssh-add后有效但重启控制台失效,可配置ssh-agent自动加载密钥:

  1. 打开Windows服务管理器(按下Win+R,输入services.msc回车),找到OpenSSH Authentication Agent服务,设置启动类型为自动,并启动该服务
  2. 打开git-bash或CMD,执行命令添加密钥到持久化存储:
ssh-add %USERPROFILE%\.ssh\gh-key

完成后,重启系统或控制台,密钥会自动被ssh-agent加载,无需每次手动添加

方法3:为单个Git仓库指定密钥(仅当前仓库生效)

如果只需要针对特定仓库使用自定义密钥,可修改仓库的Git配置:

  1. 进入目标仓库的本地目录
  2. 执行以下命令,替换密钥路径为你的自定义密钥路径:
git config core.sshCommand "ssh -i %USERPROFILE%\.ssh\gh-key -o IdentitiesOnly=yes"

IdentitiesOnly=yes参数会强制SSH仅使用指定的密钥,避免尝试其他密钥导致的冲突

注意事项

  • 确保自定义私钥文件(如gh-key)的权限设置正确:Windows上需设置只有当前用户拥有读取权限,右键文件→属性→安全→高级,禁用继承后仅保留当前用户的读取权限
  • 确认对应的公钥文件(如gh-key.pub)已正确添加到GitHub账户的SSH密钥列表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:45:57