Я пытаюсь развернуть проект, используя Capistrano. Моя машина разработки работает под управлением Windows 7; сервер, на котором я развертываюсь, - это Linux.
В deploy.rb script установлено следующее:
ssh_options[:forward_agent] = true
Capistrano script запускается при запуске команды git локально, после чего мне будет предложено ввести ключевую фразу для моего ключа SSH:
* executing `deploy:update_code'
executing locally: "git ls-remote [email protected]:pathto/gitproject.git develop"
Enter passphrase for key '/c/Users/Sam/.ssh/id_rsa':
command finished in 6999ms
(Я удалил реальный путь git из вышеперечисленного, как вы можете видеть.)
Я вводил свою кодовую фразу, и это прекрасно работает. Тем не менее, Capistrano затем пытается сделать что-то подобное на удаленном компьютере (переименован на staging-server.com в ниже), и я получаю сообщение об ошибке - см. Окончательную строку этого отрывка:
[staging-server.com] executing command
[staging-server.com] sh -c 'git clone [email protected]:pathto/gitproject.git /home/perstest/releases/20120412074500 && cd
/home/perstest/releases/20120412074500 && git checkout -b deploy 50eaf06d06d66fd20c3e55038276f420d8c308a8 && (echo 50eaf06d06d66fd20c3e55038
276f420d8c308a8 > /home/perstest/releases/20120412074500/REVISION)'
** [staging-server.com :: out] Initialized empty Git repository in /home/perstest/releases/20120412074500/.git/
** [staging-server.com :: err] Error reading response length from authentication socket.
Если я закомментирую строку forward_agent в файле deploy.rb, эта установка завершится успешно, предположительно, используя ключ от самого сервера развертывания.
Мне кажется, что работает мой SSH-ключ, ведь начальная команда git работает, я могу использовать ее в git push/pull и ssh -T git @github.com сообщает, что нужно (как рекомендуется github: help).
Я предположил, что моя машина не обслуживала ключи, когда их запрашивал удаленный сервер. После огромного количества Googling я нашел рекомендации в http://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.html, в которых объясняется, как запустить ssh-agent при запуске. Я делал все это из командной строки, поэтому я переключился на git - bash и установил мой .bash_profile, чтобы включить script, с которым я связан.
После добавления этого запроса мне была предложена кодовая фраза при первом запуске git bash, и я мог бы затем подключиться к github с помощью SSH-ключа (без повторного ввода кодовой фразы). Кроме того, ssh-add -L сообщил, что действительно имеется ключ. Итак, все кажется правильно настроенным!
Тем не менее, я все еще получаю сообщение об ошибке "Ошибка чтения длины ответа из сокета аутентификации". ошибка.
Любые идеи? Это работает для моего коллеги (такого же файла deploy.rb), машиной разработки которой является Linux.