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



我在Windows 7上使用Github for Windows。我有一个 bash 脚本将 ssh 密钥添加到我的 ssh 代理。我已经设置了一个 ssh 远程存储库。

add_key.sh

#!/bin/bash    
cd ../ssh/
eval $(ssh-agent)
ssh-add id.rsa
cd ../htdocs/

执行命令-

./add_key.sh

它返回

Agent pid 5548
Identity added: id.rsa (id.rsa)

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

为什么会这样?

您的问题是您的脚本在其自己的 shell 会话中运行,因为您正在运行./add_key.sh .

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

解决此问题的方法是通过对脚本

进行点源而不是将其作为外部脚本运行,从而在当前会话中运行该"脚本"。

那就是你想使用. add_key.sh.

相关内容

  • 没有找到相关文章

最新更新