SSH连接GitHub私有仓库失败求助:已配置密钥仍无法推拉
解决方案
针对Windows下PowerShell中Git SSH认证持久化失败的问题,按以下步骤排查修复:
1. 配置PowerShell自动加载SSH密钥
每次重启终端后需重新添加密钥,是因为PowerShell未自动启动ssh-agent并加载密钥,可通过配置Profile实现自动执行:
- 打开PowerShell,执行命令:
notepad $PROFILE - 若提示文件不存在,选择创建新文件,在文件中添加:
Start-Service ssh-agent ssh-add $env:USERPROFILE\.ssh\你的密钥文件名 # 替换为实际私钥文件名,如id_rsa - 保存关闭后,执行
. $PROFILE立即生效,或重启PowerShell。
2. 设置ssh-agent服务为自动启动
确保Windows的OpenSSH服务开机自动运行:
- 按下Win+R,输入
services.msc回车,找到OpenSSH Authentication Agent服务 - 右键选择「属性」,将「启动类型」改为「自动」,点击「启动」后确定
3. 统一Git与PowerShell使用的SSH客户端
避免Git使用自带的SSH客户端导致与PowerShell的ssh-agent不兼容:
- 在PowerShell中执行:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
4. 修复私钥文件权限
Windows下私钥权限过宽会被SSH拒绝,需严格限制访问:
- 找到
.ssh文件夹中的私钥文件,右键「属性」→「安全」→「高级」 - 点击「禁用继承」,选择「从此对象中删除所有继承的权限」
- 添加当前用户账号,设置权限为「完全控制」,应用保存
额外验证
执行ssh -vT git@github.com,查看输出中是否有以下关键信息:
Offering public key: ...(显示加载的密钥)Server accepts key: ...(服务器接受密钥)Hi [你的GitHub用户名]! You've successfully authenticated...(认证成功)
若仍有问题,可提供上述命令的完整输出进一步排查。
内容的提问来源于stack exchange,提问作者kalekale
相关产品推荐
相关产品推荐

