关机或重启后GitHub SSH路由报未知错误需重复配置怎么办
问题根因
每次重启设备后SSH失效、需要手动启动ssh-agent甚至删了重加远程地址才能恢复,本质是两个配置问题:
- 你之前执行的SSH密钥添加操作只对当前运行的ssh-agent临时会话生效,设备关机后ssh-agent进程会直接退出,加载的密钥记录会全部清空,新开机的终端会话没有自动加载对应GitHub的SSH私钥,就会触发路由未知、权限校验失败的报错
- 你之前通过
git remote remove重加远程地址的操作完全是无效重复劳动——功能恢复只是因为你重加remote的时候刚好已经手动启动了ssh-agent、加载了密钥,和远程路由配置本身没有任何关系,远程地址只要第一次配置正确,后续不需要反复修改。
永久修复步骤
按下面的顺序操作一次,之后重启设备也不会再复现问题:
- 配置SSH默认读取GitHub对应私钥
打开当前用户目录下的.ssh文件夹(Windows路径一般是C:\Users\你的系统用户名\.ssh,Mac/Linux路径是~/.ssh),查看文件夹内是否有名为config的无后缀文件,没有就新建一个。
在config文件中写入以下配置,注意替换成你自己的私钥文件名:
注意Host github.com HostName github.com User git IdentityFile ~/.ssh/你的GitHub私钥文件名 IdentitiesOnly yesIdentityFile后填的是私钥文件路径,不要填带.pub后缀的公钥文件。 - 配置ssh-agent开机自启,避免每次手动启动
如果你用Windows系统:- 以管理员权限打开PowerShell,执行以下两条命令将系统自带的ssh-agent服务设为开机自动启动:
Set-Service ssh-agent -StartupType Automatic Start-Service ssh-agent - 打开Git Bash,执行一次
ssh-add ~/.ssh/你的GitHub私钥文件名,如果你的私钥设置了密码,按提示输入一次即可,后续开机会自动加载密钥,不需要再手动执行eval $(ssh-agent -s)。
- 以管理员权限打开PowerShell,执行以下两条命令将系统自带的ssh-agent服务设为开机自动启动:
- 适配VS Code环境
打开VS Code设置,搜索git.useIntegratedAskPass选项,将其勾选取消,重启VS Code即可,不需要再在VS Code和Git Bash之间来回切换操作。
配置完成后可以重启设备验证:打开任意终端执行ssh -T git@github.com,如果返回Hi 你的GitHub用户名! You've successfully authenticated的提示,就代表配置生效,后续Git的push、pull操作都不会再触发同类报错。
内容的提问来源于stack exchange,提问作者user1889017
相关产品推荐
相关产品推荐

