2012-04-12 12 views
12

Estoy tratando de implementar un proyecto usando Capistrano. Mi máquina de desarrollo está ejecutando Windows 7; el servidor en el que estoy implementando es Linux.Despliegue de Capistrano desde Windows utilizando la opción forward_agent: "Error al leer la longitud de respuesta del socket de autenticación".

En el guión deploy.rb, se establece lo siguiente:

ssh_options[:forward_agent] = true 

El guión Capistrano comienza ejecutando un comando git localmente, momento en el que estoy yo le pida la contraseña de mi clave 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 

(he quitado el camino git real a partir de lo anterior que es probable que pueda ver.)

ingreso mi contraseña y esto funciona bien. Sin embargo, Capistrano entonces trata de hacer algo similar en la máquina remota (renombrado a staging-server.com en el siguiente) y me da un error - ver la última línea de este extracto:

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

Si comento fuera de la línea forward_agent en deploy.rb, esta instalación tiene éxito, supuestamente usando la clave del servidor de implementación.

Mi llave SSH parece estar funcionando - después de todo, el comando inicial git funciona, puedo usarlo en git push/pull y ssh -T [email protected] informa lo que debería (como se recomienda en github:help).

Supuse que mi máquina no estaba sirviendo claves cuando el servidor remoto las solicitó. Después de una gran cantidad de Google, encontré las recomendaciones en http://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.html, que explican cómo ejecutar ssh-agent al inicio. Estaba haciendo todo esto desde el símbolo del sistema, así que cambié a git-bash y configuré mi .bash_profile para que incluyera el script al que me he vinculado.

Después de agregar esto, me pidieron mi frase de contraseña cuando inicié git bash y pude conectarme a Github usando la clave SSH (sin tener que volver a ingresar la contraseña). Además, ssh-add -L informó que efectivamente había una clave disponible. ¡Entonces todo parece estar configurado correctamente!

Sin embargo, sigo recibiendo el mensaje "Error al leer la longitud de respuesta del socket de autenticación". error.

¿Alguna idea? Esto funciona para mi colega (el mismo archivo deploy.rb) cuya máquina de desarrollo es Linux.

+0

tengo el problema exacto con un compañero de trabajo de intentar desplegar las ventanas. Me funciona bien en Mac OS X 10.7 – kayaker243

Respuesta

4

trata de un error de la net-ssh como described here

+2

No estoy seguro de si el error descrito en esa página es exactamente el mismo que el que veo: los mensajes de error son diferentes. Sin embargo, esa página hace referencia a [un problema archivado sobre el reenvío de agentes y Windows] (https://github.com/net-ssh/net-ssh/issues/55), por lo que si alguna vez se soluciona, probablemente clasifique las cosas para mi situación también a pesar de que el error específico es diferente. En realidad, ahora me he cambiado a Linux (por otros motivos), así que esa es una forma de resolver el problema ;-) – Sam

+0

Aparentemente ya está solucionado: [Soporte de concurso fijo] (https://github.com/net-ssh/net -ssh/pull/140) – StormPooper

Cuestiones relacionadas