sh скриптът не добавя ssh ключ към ssh-agent (windows git bash)

Използвам Github за Windows на Windows 7. Имам 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 push origin master, той се проваля. Но когато ръчно cd в ssh директорията и изпълня същите ssh-свързани команди и cd обратно към моята директория htdocs и git push to origin master, работи.

Защо се случва това?


person goelakash    schedule 22.04.2015    source източник
comment
Откъде управлявате git push? Някаква друга шел сесия? Тази shell-сесия има ли правилно зададени опции за среда ssh-agent?   -  person Etan Reisner    schedule 22.04.2015
comment
Същата сесия на обвивката. Не съм настроил никакви опции за ssh-agent env. Изпълнявам git push от папката repo (htdocs).   -  person goelakash    schedule 22.04.2015
comment
Използвате ли ./source за изпълнение на този скрипт или използвате ./script.sh? Тъй като последното означава, че вашият git push не може да бъде в същата сесия, в която този скрипт се изпълнява в собствената си сесия на обвивката.   -  person Etan Reisner    schedule 22.04.2015
comment
Премахнах разширението .sh и стартирах отново, но не работи. И така, изпълнимият файл винаги ли създава отделна сесия?   -  person goelakash    schedule 22.04.2015
comment
Разширението няма значение. Как го управлявате го прави. Изпълнението на скрипт като /path/to/script.sh стартира нова обвивка. Използването на . /path/to/script.sh използва текущата обвивка.   -  person Etan Reisner    schedule 22.04.2015
comment
Така че изпълнявам като ./add_key. Това трябва да е в същата обвивка. Така че след това?   -  person goelakash    schedule 22.04.2015
comment
Не, това е /path/to/script.sh. Вашият път случайно е ./. Искате . add_key или . ./add_key. Обърнете внимание на пространството.   -  person Etan Reisner    schedule 22.04.2015
comment
Страхотен! Премахването на обратната наклонена черта и вмъкването на интервал свършиха работа.   -  person goelakash    schedule 22.04.2015
comment
Нека продължим тази дискусия в чата.   -  person goelakash    schedule 22.04.2015


Отговори (1)


Вашият проблем е, че вашият скрипт работи в собствена сесия на обвивката, защото изпълнявате ./add_key.sh.

Това означава, че променливите, зададени от eval $(ssh-agent), не живеят извън тази сесия на обвивката, така че родителската сесия ги няма и не може да използва агента (също така може да създавате нов агент всеки път, когато изпълнявате скрипта).

Решението за това е да стартирате този "скрипт" в текущата сесия чрез точков изход на скрипта, вместо да го изпълнявате като външен скрипт.

Тоест искате да използвате . add_key.sh.

person Etan Reisner    schedule 22.04.2015