Windows下GitHub自定义SSH密钥名克隆报公钥权限拒绝解决方法
问题根因
SSH客户端默认仅自动读取~/.ssh/路径下id_rsa、id_ed25519等默认命名规则的私钥,自定义命名的密钥不在默认扫描范围内,连接GitHub时客户端找不到匹配的私钥,就会抛出Permission denied (publickey)报错。你把密钥改回默认名就能正常使用,也印证了这个问题。
操作步骤
- 配置SSH规则文件
进入Windows用户目录下的.ssh文件夹,默认路径为C:\Users\你的系统用户名\.ssh。如果文件夹内没有名为config的无后缀文件,手动新建一个(注意不要存成config.txt这类带后缀的文件,否则SSH无法读取配置)。
在config文件中写入以下配置:
配置项说明:Host github.com HostName github.com User git IdentityFile ~/.ssh/你给GitHub密钥设置的自定义私钥文件名 IdentitiesOnly yesIdentityFile指定连接github.com时要使用的私钥路径,直接替换成你自己的私钥文件名即可,比如你私钥叫gh_rsa就填~/.ssh/gh_rsaIdentitiesOnly yes会强制SSH仅使用指定的密钥做认证,避免客户端自动遍历其他密钥触发GitHub的认证次数限制
- 验证配置有效性
打开Git Bash执行测试命令:
如果返回信息包含你的GitHub用户名,提示认证成功,就说明配置生效。ssh -T git@github.com - 正常使用Git操作
配置完成后所有针对GitHub的clone、pull、push操作都会自动调用你指定的自定义名称密钥,不需要每次手动把私钥添加到ssh-agent,也不会占用默认的id_rsa密钥名。后续如果需要给其他Git平台(比如GitLab、自建Git服务)配置独立密钥,只需要在config文件里追加对应Host的配置段即可,多密钥完全不会互相冲突。
内容的提问来源于stack exchange,提问作者crabulus_maximus
相关产品推荐
相关产品推荐

