Windows下Git推送提示Permission Denied(publickey)的问题求助
解决自定义SSH密钥名称导致Git推送权限问题
方法1:配置SSH Config文件(全局生效)
这是最通用的解决方案,让SSH每次连接GitHub时自动使用自定义密钥:
- 在用户目录下的
.ssh文件夹中创建无后缀的config文件(路径示例:C:\Users\[你的用户名]\.ssh\config) - 写入以下配置内容,替换
gh-key为你的自定义密钥文件名:
Host github.com HostName github.com User git IdentityFile ~/.ssh/gh-key
- 保存文件后,重新执行
git push origin master测试效果
方法2:让ssh-agent自动持久化加载密钥(解决重启控制台失效问题)
如果手动执行ssh-add后有效但重启控制台失效,可配置ssh-agent自动加载密钥:
- 打开Windows服务管理器(按下Win+R,输入
services.msc回车),找到OpenSSH Authentication Agent服务,设置启动类型为自动,并启动该服务 - 打开git-bash或CMD,执行命令添加密钥到持久化存储:
ssh-add %USERPROFILE%\.ssh\gh-key
完成后,重启系统或控制台,密钥会自动被ssh-agent加载,无需每次手动添加
方法3:为单个Git仓库指定密钥(仅当前仓库生效)
如果只需要针对特定仓库使用自定义密钥,可修改仓库的Git配置:
- 进入目标仓库的本地目录
- 执行以下命令,替换密钥路径为你的自定义密钥路径:
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
相关产品推荐
相关产品推荐

