sh脚本未将ssh密钥添加到ssh-agent(Windows git bash)

goe*_*ash 6 windows git ssh bash push

我正在Windows 7上使用Windows的Github。我有一个bash脚本,可以将ssh-key添加到我的ssh-agent中。我已经设置了一个ssh远程仓库。

add_key.sh

#!/bin/bash    
cd ../ssh/
eval $(ssh-agent)
ssh-add id.rsa
cd ../htdocs/
Run Code Online (Sandbox Code Playgroud)

执行命令

./add_key.sh
Run Code Online (Sandbox Code Playgroud)

它返回

Agent pid 5548
Identity added: id.rsa (id.rsa)
Run Code Online (Sandbox Code Playgroud)

当我git push origin master时,它失败了。但是,当我手动在ssh目录中cd并运行与ssh相关的相同命令并将cd返回我的目录htdocs和git push到origin master时,它可以工作。

为什么会这样呢?

Eta*_*ner 7

您的问题是,由于您正在运行,因此脚本正在其自己的Shell会话中运行./add_key.sh

这意味着by设置的变量eval $(ssh-agent)不会存在于该shell会话之外,因此父会话没有它们并且不能使用代理(同样,您每次运行脚本时都可能会生成新的代理)。

解决此问题的方法是通过点源脚本来在当前会话中运行该“脚本”,而不是将其作为外部脚本运行。

那就是你要用的. add_key.sh