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

sh script doesn't add ssh key to ssh-agent (windows git bash)

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

add_key.sh

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

执行命令-

./add_key.sh

它returns

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

当我git推送origin master时,它失败了。 但是当我在 ssh 目录中手动 cd,并且 运行 相同的 ssh 相关命令和 cd 回到我的目录 htdocs 和 git 推送到 origin master 时,它起作用了。

为什么会这样?

你的问题是你的脚本在它自己的 shell 会话中 运行ning 因为你 运行ning ./add_key.sh.

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

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

那是你想用. add_key.sh