重装系统后每次开机都需重新运行ssh-agent和ssh-add才能访问Git仓库
SSH密钥开机自动加载解决方案
问题根因
ssh-agent未配置开机自启,也没有设置自动加载你自定义的id_personal私钥,因此每次重启后都需要手动执行命令注册密钥,访问GitHub、GitLab等SSH协议的代码仓库都会触发权限报错。
分系统配置方案
1. Windows系统(含Git Bash / PowerShell场景)
- 首先开启系统SSH服务自启:按下
Win+R输入services.msc回车,在服务列表中找到OpenSSH Authentication Agent,将启动类型修改为「自动」,再手动点击启动该服务。 - 进入用户目录下的
.ssh文件夹,新建无后缀的config文件,写入以下配置:
Host * AddKeysToAgent yes IdentityFile ~/.ssh/id_personal
如果使用Git Bash不想用系统服务,也可以直接参考下方Linux的shell配置方案,把启动命令写入~/.bashrc即可。
2. macOS系统
- 编辑用户目录下的
~/.ssh/config文件,写入以下配置:
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_personal
- 执行一次命令将私钥存入系统钥匙串:
ssh-add --apple-use-keychain ~/.ssh/id_personal(老版本macOS可替换为ssh-add -K ~/.ssh/id_personal)。
3. Linux系统
场景A:带GNOME/KDE等桌面环境的个人设备
大部分桌面发行版默认自带SSH密钥管理组件,直接编辑~/.ssh/config写入和上述Windows一致的配置即可,首次使用输入私钥密码后会自动存入系统密钥环,开机自动加载。
场景B:无桌面的服务器/极简发行版
编辑对应shell的启动配置文件(bash对应~/.bashrc,zsh对应~/.zshrc),在末尾添加以下内容:
# 自动启动ssh-agent并加载私钥 if [ -z "$SSH_AUTH_SOCK" ] ; then eval `ssh-agent -s` ssh-add ~/.ssh/id_personal 2>/dev/null fi
保存后执行source ~/.bashrc(对应zsh就改配置文件名)立即生效。
验证方法
配置完成后重启电脑,直接执行ssh -T git@github.com,返回认证成功的提示即为配置生效,GitLab可执行ssh -T git@gitlab.com验证。
如果你的私钥设置了密码,首次使用输入一次后,后续开机无需重复输入。
内容的提问来源于stack exchange,提问作者IanQ
相关产品推荐
相关产品推荐

