简体   繁体   中英

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

I am using Github for Windows on Windows 7. I have a bash script to add the ssh-key to my ssh-agent. I have setup a ssh remote repo.

add_key.sh

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

Execute command-

./add_key.sh

It returns

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

When I git push origin master, it fails. But when I manually cd in the ssh directory, and run the same ssh-related commands and cd back to my directory htdocs and git push to origin master, it works.

Why is this happening?

Your problem is that your script is running in its own shell session because you are running ./add_key.sh .

This means that the variables set by eval $(ssh-agent) are not living beyond that shell session so the parent session doesn't have them and cannot use the agent (also you might be spawning a new agent each time you run the script).

The fix for this is to run that "script" in the current session by dot-sourcing the script instead of running it as an external script.

That is you want to use . add_key.sh . add_key.sh .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM