2009-09-30 9 views
7

Parece que tengo algunos problemas reales para configurar msysgit. Puedo conectar a través de la masilla a mi directorio SSH usandomsysgit troubles

ssh: // usuario @ host: puerto

Y tengo las llaves correctas. También puedo hacer esto utilizando plink a través de la

plink -P puerto de usuario @ host -i /path/to/private_key.ppk

Cuando intento ejecutar (a través de TortiseGIT) oa través de una Git Bash

git clone ssh: // usuario @ host: puerto/ruta/a/myapp.git

cada vez me siento el error

Inicializó el repositorio vacío de Git en D: /Git/myapp.git
advertencia: Parece que ha clonado un repositorio vacío.
fatal: El extremo remoto colgó inesperadamente

He comprobado bot /Git/setup.ini y TortiseGIT y ambos utilizar

C: \ Archivos de programa \ TortoiseSVN \ bin \ TortoisePlink.exe

¿Alguien sabe cómo puedo solucionar este problema ya que me está volviendo loco!

Respuesta

1

Necesita instalar el concurso y agregar la clave en él.

también vuelve a comprobar que la variable de entorno GIT_SSH está configurado para utilizar plink

+0

hey gracias por la respuesta - sí, tienen en marcha del desfile y la clave se carga en él. la variable de entorno GIT_SSH (mediante /Git/setup.ini) se establece en la ruta como se indicó anteriormente. –

+0

incluso cuando ejecuto git push ssh: // usuario @ host: puerto/ruta/a/myapp.git - acabo de recibir "fatal: el extremo remoto colgó inesperadamente" –

+0

¿hay alguna forma de depurar en "GIT"? es decir, ¿traza o algo? cómo hacer esto en la salida? –

0

¿Hay algo (es decir, al menos un commit) en el repositorio remoto?

git dice: "Advertencia: Usted parece haber clonado un repositorio vacío"

y cuando se quiere impulsar en el repositorio remoto de vacío tiene que utilizar:

git push URL master 
+0

gracias por la respuesta. Sí, no estoy seguro de que ese sea el problema, porque incluso cuando presiono sigo teniendo el error. ¿Cómo puedo "depurar" git o plink? ¿Tiene alguna idea? –

+0

Ehh ... ¿No estás seguro de que este es el problema? Pensé que no se puede presionar en ese repositorio? (vea el comentario a la respuesta de nolim1t) –

+0

Puede intentar configurar GIT_TRACE = 1 y 'git ls-remote Your-URL' –

0

Ha intentado conectar de Git-Bash con ssh user @ host: port? ¿Se conecta directamente o solicita una contraseña?

El puerto solo es necesario si está utilizando un puerto no estándar para ssh; de lo contrario, tendrá un valor predeterminado de 22. Es una cosa de Putty pero asegúrese de que puede conectarse desde git bash porque generalmente tendrá su propio almacén de claves en un directorio .ssh fuera de su directorio de usuario. Si no puede conseguir que funcione de Git-Bash que debe arreglar la llave o de depuración donde está el problema, intente especificar la clave mediante el uso de

ssh -i usuario del archivo de claves @ host: puerto

si ese doesn No funciona o le solicita una contraseña en la máquina remota, significa que el intercambio de claves no funciona correctamente.Por lo tanto, debe verificar que las teclas estén configuradas correctamente con respecto al entorno de Git-Bash. En particular, asegúrese de haber exportado la clave RSA y no solo está utilizando la clave ppk con Git-Bash. No creo que eso sea compatible. No uso Tortoise-Git, así que no puedo evitarlo, pero sí uso Git Bash con regularidad.

9

Aquí es un poco de una lista de verificación:

  1. Está SSH habilitado en el servidor que está intentando conectarse?
  2. ¿Está GIT instalado en el servidor?
  3. ¿Tiene una configuración de repositorio Git en el servidor?
  4. ¿El repositorio tiene los permisos correctos y tiene el repositorio compartido habilitado en la configuración en el servidor?
  5. ¿Tiene las llaves ssh en el lugar correcto para GIT?

    Sugerencias:

1: Ya que se puede conectar el uso de masilla, parece ssh está configurado bien.

2: Use masilla y conéctese al servidor. Escriba git --version ¿Obtiene una respuesta razonable? De lo contrario, deberá instalarlo en el servidor.

3: Intente configurar un nuevo repositorio en el servidor. Asumiendo que es un servidor de estilo * nix, use masilla y conéctese al servidor y cree un nuevo repositorio usando los siguientes comandos, asumiendo que tiene un directorio/home/código_origen. La línea de eco simplemente crea un archivo con un poco de texto, así que tenemos algo para empezar.

cd /home/source_code 
mkdir test_repo 
cd /home/source_code/test_repo 
echo "first file" > t.txt 
git init 
git add . 
git commit -m "Initial Import" 

Así que ahora tenemos un repositorio con un archivo t.txt en él. Como regla general, nunca debe ingresar a un repositorio que contenga cambios en la copia de trabajo. El propósito de tener un repositorio en el servidor es para que las personas puedan acceder a él todo el tiempo. Hacemos un clon "simple" que es solo la base de datos git, de esa manera no hay posibilidad de ningún cambio de copia de trabajo. Es este clon "desnudo" que usaremos como el repositorio git central.

cd /home/source_code 
git clone --bare test_repo/ test_repo.git 

Ahora puede deshacerse del repositorio temporal que hemos configurado.

cd /home/source_code/ 
rm -rf test_repo 

en su computadora local intentar la clonación de nuevo

git clone ssh://[email protected]:port/home/source_code/test_repo.git 

4: Permisos: Esto no debe causar ningún problema con la clonación, ir a buscar o tirando, a menos que haya seleccionado una ubicación del repositorio que tampoco tienen acceso de lectura Si se obtiene un error de permiso denegado cuando se empuja entonces referirse a Permissions correction

5: Configuración pública/clave privada para GIT:

  1. Conectar al servidor con masilla
  2. Establecer permisos en el directorio ~/carpeta .ssh: chmod 700 .ssh
  3. Establezca permisos en su ~ /.ssh/authorized_keys: chmod 600 authorized_keys
  4. generar las claves ssh-keygen -t dsa
  5. aceptar los nombres de archivo que quiere utilizar
  6. no introduce una frase de contraseña (solo entrar). Querrá volver a hacer esto con una frase de contraseña más adelante.
  7. agregar la clave de pub en el fichero authorized_keys: cat id_dsa.pub >> .ssh/authorized_keys
  8. editar/etc/ssh/ssh_config y agregue la línea PubkeyAuthentication yes
  9. reiniciar el demonio ssh sudo /etc/init.d/ssh restart
  10. Copia id_dsa y id_dsa.pub desde el servidor a su duro local unidad (use winscp o sftp o alguna herramienta similar) c: \ users \ userName \ .ssh directorio (esto es para vista la ubicación será un poco diferente para otras versiones de windows)
  11. Establezca tortoise git para que apunte a C: \ Archivos de programa \ Git \ bin \ ssh.exe (no masilla)

Tanto la línea de comando git como la tortuga git deben configurarse para que funcionen. Intente clonar nuevamente en su máquina local.

git clone ssh://[email protected]:port/home/source_code/test_repo.git 

Ahora que quiera ir y repetir la configuración de las teclas con una frase de contraseña ....

Cuestiones relacionadas