2011-09-20 50 views
5

comienzo a Ubuntu Linux, abre un terminal, editar algo de código, y felizmente ejecutogit push se bloquea después de pulsar algunos

git push origin master 

Sin embargo, después de un período de tiempo (a veces 30 minutos, a veces unas pocas horas), el mismo comando exacto se bloqueará (sin salida).

Cuando intento

ssh -v [email protected] 

tengo la siguiente respuesta:

OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010 
debug1: Reading configuration data /home/avitus/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Applying options for * 
debug1: auto-mux: Trying existing master 

Y entonces se bloquea de nuevo. Parece que ya no puedo usar SSH para hacer git una vez que tengo SSH en otro servidor. Alguna idea de cómo solucionar este problema? Me está matando tener que reiniciar cada vez.

Actualización:

el problema desaparece cuando quito las dos líneas siguientes (por objeto facilitar el intercambio de conexión) desde ~/.ssh/config

ControlMaster auto 
ControlPath /tmp/ssh_mux_%h_%p_%r 
+0

¿Ha configurado en algún momento otra conexión SSH a GitHub como maestro de control? (Ese es un mecanismo para compartir una conexión existente.) Ese mensaje de depuración parece haber encontrado un maestro de control SSH existente –

+0

Marca - Creo que el problema es algo así como lo que se menciona porque cuando eliminé las dos líneas anteriores todo comenzó a funcionar de nuevo. Sin embargo, solo tengo un usuario conectado a Git en esta máquina. – Andy

+0

genial, me alegra saber que funcionó. He agregado una respuesta en ese sentido ahora. –

Respuesta

2

Simplemente girando mi suposición de un comentario en una respuesta ...

la última línea en la salida de ssh -v:

debug1: auto-mux: Trying existing master 

... indica que SSH se configuró para buscar una conexión SSH existente para volver a utilizar. Sospecho que esta conexión existente eventualmente se atasca de alguna manera, lo que explicaría el comportamiento que estás viendo.

Esta conexión compartida se describe en la sección ControlMaster de the ssh_config(5) man page. Básicamente, la sesión SSH "maestra" crea un socket en /tmp al que se pueden conectar las sesiones posteriores en lugar de tener que volver a pasar por el paso de autenticación de longitud potencialmente. Tiene esta opción establecida en auto, lo que significa que este socket se creará y usará automáticamente.