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
。
我在 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
。