Cuando uso GIT, tengo problemas con el uso de GIT sobre SSH , y dado que funciona bien tanto desde el trabajo como en casa con un módem diferente, obviamente es el módem de mi casa el que está funcionando mal. No tengo problemas para conectarme a través de HTTP.
Por lo tanto, supongo que es un problema de SSH, pero no soy un experto en usarlo directamente. ¿Hay algún comando que pueda ejecutar que establezca una conexión de "prueba" y me permita saber exactamente cuándo y dónde se produce el problema?
Casi todos los comandos "más grandes" (como fetch
, clone
o push
con muchos datos) de git
(incluso cuando se ejecutan con -v
) simplemente se "cuelgan" en el medio de la conexión remota sin indicación de por qué se han detenido, por lo que no sirven de nada .
¿Hay alguna forma de obtener más detalles sobre lo que sucede en la conexión SSH?
fuente
GIT_SSH_COMMAND="ssh -v" git clone example
puedo depurar la versión SSH, se imprime después delCloning into
mensaje, pero falla engit clone
. Después de quitarloGIT_SSH_COMMAND
funciona. Al final, cumplió el propósito.git -c core.sshCommand="ssh -vvv" pull
git config --global core.sshCommand "ssh -vvv" git clone example
Tuve un problema similar. Para la depuración, agregué una línea en mi ssh_config. Así es como lo hice:
Allí encontrarás una línea como esta:
En este caso el host es
github.com
. Ahora puede agregar una entrada de host en su configuración ssh:Y añadir:
Al usar las operaciones de git, ahora debería recibir muchos mensajes de depuración. Para obtener mensajes de depuración menores, intente usar
DEBUG1
Para versiones GIT> = 2.3.0, consulte la respuesta de @Flimm para una solución más inteligente.
fuente
Leyendo
man git
, hay algunas variables ambientales útiles que puede establecer,GIT_TRACE_PACKET
yGIT_TRACE
. Por ejemplo:Un poco tarde para el juego, pero espero que esto ayude a alguien.
fuente
Por
man ssh
:Entonces, inténtalo
ssh -v
. Si eso no le dice lo que necesita saber, puede agregar uno o dosv
s para obtener información de depuración aún más detallada. Para Github en particular, intentessh -vvvT [email protected]
.Por lo general, en mi experiencia, una sesión SSH que se cuelga durante la configuración ocurre cuando el cliente no puede completar el método de autenticación elegido. Verifique que su clave privada esté en el lugar correcto con los permisos correctos y que coincida con la clave pública que le ha dado a Github.
fuente
push
/pull
en el repositorio sin problemas. Pero a menudo simplemente se "cuelga" en el medio del comando y no continuará (especialmente cuando transfiero grandes cantidades de datos, como un granclone
opush
). No hay mensajes de error, simplemente se queda allí y no continúa.No veo una manera de decirle a git (1) el comando externo que se debe usar para ssh (1), pero como solución alternativa, simplemente cambie el nombre / path / to / ssh a /path/to/ssh.orig, cree un shell script wrapper / path / to / ssh, y agregue las banderas -v:
Obtengo resultados detallados al ejecutar comandos git que operan sobre un transporte ssh. Una vez realizada la depuración, elimine el script y restaure /path/to/ssh.orig en / path / to / ssh.
fuente
/usr/bin
, considere colocar el script de contenedor/usr/local/bin
.GIT_SSH
se puede configurar para que apunte al binario que desea que use Git.