Я пытаюсь развернуть проект с помощью Capistrano. Моя машина для разработки работает под управлением Windows 7, сервер, на который я развертываю, — Linux.
В сценарии deploy.rb установлено следующее:
ssh_options[:forward_agent] = true
The Capistr Сценарий ano начинается с локального запуска команды git, после чего у меня запрашивается парольная фраза для моего ключа SSH:
* executing `deploy:update_code'
executing locally: "git ls-remote git@github.com: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 git@github.com: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 (скрытый) сообщает, что должен (как рекомендовано на github:help ).
Я предположил, что моя машина не выдает ключи, когда их запрашивает удаленный сервер. После огромного количества поисков в Google я нашел рекомендации по адресу http://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.html, которые объясняют как запустить ssh-агент при запуске. Я делал все это из командной строки, поэтому затем переключился на git-bash и настроил свой .bash_profile для включения скрипта, на который я ссылался.
После этого при первом запуске git bash у меня запрашивалась фраза-пароль, после чего я мог подключиться к github с помощью ключа SSH (без повторного ввода фразы-пароля). Кроме того, ssh-add -L сообщил, что ключ действительно доступен. Так вроде все правильно настроил!
Однако я по-прежнему получаю сообщение «Ошибка чтения длины ответа из сокета аутентификации». ошибка.
Есть идеи? Это работает для моего коллеги (тот же файл deploy.rb), чьим компьютером для разработки является Linux.