如何防止MacOS休眠后丢失Git访问凭证?
解决方案
方法1:配置SSH自动利用钥匙串持久化密钥
这是最彻底的解决方式,让MacOS钥匙串自动管理SSH密钥,休眠后无需手动操作:
- 首先将密钥添加到钥匙串,执行命令:
ssh-add --apple-use-keychain ~/.ssh/id_rsa
如果之前已经手动添加过密钥,先执行ssh-add -d ~/.ssh/id_rsa清除旧的条目,再执行上面的命令。
- 编辑
~/.ssh/config文件(如果没有就创建),添加以下配置:
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
这个配置会让SSH在需要时自动将密钥加入agent,并通过钥匙串保存密钥的解锁状态,休眠恢复后自动生效。
方法2:修改Shell配置文件自动维护ssh-agent
如果不想修改SSH配置,可以通过Shell启动脚本自动检查并重启ssh-agent、加载密钥:
根据你使用的Shell,编辑对应的配置文件:
- 若使用Zsh:编辑
~/.zshrc - 若使用Bash:编辑
~/.bash_profile或~/.bashrc
- 若使用Zsh:编辑
添加以下脚本内容:
# 检查并维护ssh-agent会话 if [ -z "$SSH_AUTH_SOCK" ]; then # 查找已存在的ssh-agent套接字 SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.* | head -n 1) export SSH_AUTH_SOCK fi # 如果agent未运行或没有加载密钥,重新启动并加载 if [ -z "$SSH_AUTH_SOCK" ] || ! ssh-add -l >/dev/null 2>&1; then eval "$(ssh-agent -s)" ssh-add --apple-use-keychain ~/.ssh/id_rsa fi
- 保存文件后,执行
source ~/.zshrc(或对应Shell的配置文件)让修改立即生效,之后每次终端启动都会自动处理ssh-agent的状态,休眠恢复后打开终端也会自动重新加载密钥。
内容的提问来源于stack exchange,提问作者Vince
相关产品推荐
相关产品推荐

