попытка развернуть с помощью Capistrano, но ssh-agent на моей удаленной машине не сохраняет мою личность загруженной, поэтому команда git не работает; Зачем?

Я просмотрел несколько документов о том, как подготовиться к использованию Capistrano, и среди них была «аутентификация и авторизация» с веб-сайта Capistrano.

Все шло денди, когда я сделал эту команду

me@localhost $ ssh [email protected] 'hostname; uptime'

но.. когда я сталкиваюсь с этой командой

me@localhost $ ssh -A [email protected] 'git ls-remote [email protected]:team/application.git

у меня ужас

Permission denied (publickey).

Я решил подключиться по ssh к серверу напрямую от имени пользователя развертывания и попробовать свою команду оттуда, но затем меня попросили ввести парольную фразу:

me@localhost:~$ ssh [email protected]
... bunch of logon information ...

deployer@server:~$ git ls-remote [email protected]:team/application.git
Enter passphrase for key '/home/deployer/.ssh/id_rsa':

Я ввел парольную фразу и получил ответ от битбакета. Теперь я не понял, почему меня попросили ввести мою парольную фразу, потому что ssh-агент должен загрузить мою личность, и все должно быть хорошо с развертыванием и битбактом. Я решил проверить, загрузил ли ssh-agent мою личность, запустив

ssh-add -l

но потом я получил

Could not open a connection to your authentication agent.

какие? хорошо, затем я запустил ssh-агент и убедился, что моя личность была загружена, сделав это

deployer@server:~$ eval "$(ssh-agent)"
Agent pid 30113
deployer@server:~$ ssh-add -l
The agent has no identities.
deployer@server:~$ ssh-add
Enter passphrase for /home/deployer/.ssh/id_rsa: 
Identity added: /home/deployer/.ssh/id_rsa (/home/deployer/.ssh/id_rsa)
deployer@server:~$ ssh-add -l
2048 6c:87:f9:e1:71:75:0d:1c:cf:8d:d8:a8:06:fc:70:e7 /home/deployer/.ssh/id_rsa (RSA)

и теперь я мог сделать свой удаленный список из битбакета просто отлично, не вводя парольную фразу

deployer@server:~$ git ls-remote [email protected]:team/application.git
f25db5c4691531c8ad27882c74d9668de66f795f    HEAD
97a68f4f6cbffd0c320b37891ffdda57931146f4    refs/heads/deployer
f25db5c4691531c8ad27882c74d9668de66f795f    refs/heads/master
deployer@server:~$ 

теперь я был счастлив, вышел из сервера и снова попытался с моей локальной машины

deployer@server:~$ exit
logout
Connection to server.com closed.
me@localhost:~$ ssh [email protected] 'git ls-remote [email protected]:team/application.git'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

??? В этом и заключается моя проблема... теперь вы видите, где я ошибаюсь?


person bjorgvin    schedule 26.09.2013    source источник


Ответы (1)


Вы можете войти один раз, чтобы запустить ssh-агент и загрузить свои ключи (ssh-add) в агент. Сохраните вывод ssh-agent в какой-нибудь файл.

Когда вы входите удаленно для целей git, установите SSH_AUTH_SOCK и SSH_AGENT_PID через ваш bashrc или какой-либо другой сценарий запуска, используя сохраненную информацию. Вам не нужен новый ssh-агент. Нужно указать на тот самый, у которого уже есть ключи.

person Rajesh Mohan    schedule 27.09.2013
comment
хорошо, я вижу, если я делаю «pidof ssh-agent», их много работает :) хорошо. и теперь я попытаюсь узнать, как установить SSH_AUTH_SOCK и SSH_AGENT_PID. спасибо ... я отмечу это как правильный ответ, когда заработаю :) - person bjorgvin; 27.09.2013
comment
нашел хорошее решение проблемы @ superuser.com/questions/141044/ сценарий находится в репозитории git github.com/intuited/sshag - person bjorgvin; 27.09.2013
comment
ну... я могу использовать данный скрипт для установки агента. но теперь мне нужно передать свою парольную фразу для ssh на мой сервер в качестве развертывателя ?? так что теперь, когда я делаю ssh -a [email protected] 'sshag', мне нужно указать свою парольную фразу, а команда sshag не знает ?? он находится в .bashrc, и когда я подключаюсь к серверу по ssh, а затем запускаю sshag, он отлично работает ?? - person bjorgvin; 27.09.2013