如何配置GitHub使用指定SSH密钥并验证密钥关联状态
Git推送GitHub公钥权限报错修复方案
报错信息
执行git push时返回以下错误:
no such identity: /users/me/.ssh/id_ed25519: No such file or directory git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.
强制GitHub使用fkey密钥的配置步骤
- 打开SSH客户端配置文件,路径为
/users/me/.ssh/config,如果该文件不存在直接新建即可。 - 在文件中添加以下针对GitHub的主机匹配规则:
Host github.com HostName github.com User git IdentityFile /users/me/.ssh/fkey IdentitiesOnly yes
其中IdentitiesOnly yes为核心配置,作用是强制SSH仅使用指定路径的密钥发起认证,不会自动扫描尝试默认路径下的id_ed25519、id_rsa等密钥,从根源上避免找不到不存在密钥的报错。
- 保存文件后,修正私钥和配置文件的权限,避免SSH因权限规则拒绝读取文件,执行以下命令:
chmod 600 /users/me/.ssh/config /users/me/.ssh/fkey
验证fkey密钥关联正确性的操作
- 测试SSH公钥认证连通性:执行命令
ssh -T git@github.com,如果返回Hi [你的GitHub用户名]! You've successfully authenticated, but GitHub does not provide shell access.的提示,说明fkey已经可以正常通过GitHub的公钥校验。 - 确认本地仓库远程地址格式:进入本地仓库目录,执行
git remote -v,确认origin的fetch、push地址均为git@github.com:[你的用户名]/[仓库名].git格式。如果当前是HTTPS地址,执行git remote set-url origin git@github.com:[你的用户名]/[仓库名].git即可切换,不需要删除仓库重新克隆。 - 模拟推送验证链路:执行
git push --dry-run做无副作用的推送模拟,如果没有返回公钥权限报错,说明配置完全生效,后续实际推送会自动调用fkey密钥。 - 查看实时认证密钥确认匹配:如果需要确认当前认证过程确实使用fkey,可执行
ssh -vT git@github.com开启调试日志,在输出中找到Offering public key: /users/me/.ssh/fkey以及后续的Authenticated to github.com相关行,即可证明当前认证链路使用的就是指定的fkey密钥。你在GitHub账户SSH密钥列表中已经能看到fkey的公钥记录,只要上述连通性测试通过,就说明该密钥和你的账户已经正确绑定,不需要额外操作。
内容的提问来源于stack exchange,提问作者bobsmith76
相关产品推荐
相关产品推荐

