You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么在bash脚本中source执行ssh-agent和ssh-add后git push仍报错?

问题根因
  • 你的脚本中ssh-agent bash命令会启动一个独立的子bash进程,脚本执行到这一行会直接阻塞,直到你手动退出该子bash才会执行后续的ssh-add命令
  • 子bash进程的运行环境和你执行. set_env.sh的父shell完全隔离,你在子bash中添加的SSH密钥、ssh-agent对应的环境变量都无法同步到父shell中,等你回到父shell执行git push时,完全读不到你之前添加的密钥信息,因此触发权限报错。
修复方案

方案1:修改set_env.sh脚本适配source执行

将set_env.sh的内容调整为:

# 把ssh-agent输出的环境变量导入当前shell
eval `ssh-agent -s`
# 添加指定密钥到当前ssh-agent
ssh-add ~/.ssh/id_rsa_lrz

之后每次执行. set_env.sh后,即可正常运行git push。

方案2:配置SSH默认密钥(无需每次执行脚本)

直接编辑~/.ssh/config文件(不存在就新建),添加如下配置:

# 替换Host值为你实际使用的Git托管服务域名,比如gitee.com、gitlab.com等
Host github.com
  IdentityFile ~/.ssh/id_rsa_lrz
  IdentitiesOnly yes

保存配置后,你可以直接执行git push,不需要每次手动启动ssh-agent、添加密钥。

内容的提问来源于stack exchange,提问作者calvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:27:00