Implementação do Capistrano a partir do Windows usando a opção forward_agent: "Erro ao ler o comprimento da resposta do soquete de autenticação".

Estou tentando implantar um projeto usando o Capistrano. Minha máquina de desenvolvimento está executando o Windows 7; o servidor em que estou implantando é o Linux.

No script deploy.rb, o seguinte é definido:

<code>ssh_options[:forward_agent] = true
</code>

O script do Capistrano começa executando um comando git localmente, ponto em que me é pedido o código de acesso da minha chave SSH:

<code>* 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
</code>

(Eu removi o caminho real do acima, como você provavelmente pode ver).

Eu entro na minha senha e isso funciona bem. No entanto, Capistrano, em seguida, tenta fazer algo semelhante na máquina remota (renomeado para staging-server.com no abaixo) e eu recebo um erro - consulte a última linha deste extrato:

<code>[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.
</code>

Se eu comentar a linha forward_agent no deploy.rb, essa instalação será bem-sucedida, presumivelmente usando a chave do próprio servidor de implantação.

Minha chave SSH parece estar funcionando - afinal, o comando git inicial funciona, eu posso usá-lo no git push / pull e ssh -T [email protected] relata o que deve (como recomendado emgithub: help).

Presumi que minha máquina não estava servindo chaves quando solicitada pelo servidor remoto. Depois de muita pesquisa no Google, encontrei as recomendações emhttp://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.html, que explica como obter o ssh-agent em execução na inicialização. Eu estava fazendo tudo isso a partir do prompt de comando, então eu mudei para o git-bash e configurei o meu .bash_profile para incluir o script que eu criei.

Depois de adicionar isso, fui avisado pela minha frase-senha quando iniciei o git bash e pude então conectar-me ao github usando a chave SSH (sem ter que reinserir a frase secreta). Além disso, ssh-add -L relatou que havia de fato uma chave disponível. Então tudo parece estar configurado corretamente!

No entanto, ainda recebo a mensagem "Erro ao ler o comprimento da resposta do soquete de autenticação". erro.

Alguma ideia? Isso funciona para o meu colega (mesmo arquivo deploy.rb) cuja máquina de desenvolvimento é o Linux.

questionAnswers(1)

yourAnswerToTheQuestion