Gitlab no funciona con claves SSH


10

Tengo problemas con Gitlab. Utilicé la siguiente guía para instalar y configurar Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . La instalación parecía ir bien y todo. La aplicación web parece estar funcionando bien. Sin embargo, no puedo clonar, tirar, empujar, básicamente no puedo usar Gitlab. He visto errores 403 con HTTP y permiso denegado al intentar clonar sobre SSH.

Me he asegurado de que mis claves privadas estén configuradas correctamente tanto en Windows como en OS X. Puedo ver las claves públicas en el servidor. Agregué lo siguiente a mi archivo de configuración en ~ / .ssh.config

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

Esto es lo que veo en / var / log / secure

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

No /var/log/messagefuncionó cuando intenté usar git o ssh

No estoy seguro de a dónde ir desde aquí. ¿Alguna sugerencia?

No sé qué quieres decir con SSH usando git username. La guía que utilicé no creó una contraseña para el usuario de git y declaró que el usuario no puede ser utilizado para iniciar sesión.


¿Puede SSH al servidor Git como usuario 'git'? ¿Puede intentar agregar el parámetro '-vvv' para obtener más información sobre por qué se está cerrando la conexión? También podría valer la pena revisar los archivos / var / log / secure y / var / log / messages para ver si hay algún error allí.
jaseeey

Las claves públicas no están configuradas en el cliente; debe asegurarse de que sus claves privadas estén en su cliente. Las claves públicas van al servidor.
EEAA

Actualicé mi pregunta. Espero que eso ayude
greyfox

Respuestas:


10

Siempre que haya cargado su clave privada en su cliente, parece que esto podría ser un problema de permisos en el directorio de inicio del usuario 'git' y el directorio .ssh.

Intente cambiar su directorio / home / git a una máscara de 0711:

chmod 0711 /home/git

Asegúrese de que el directorio /home/git/.ssh tenga una máscara de 0700:

chmod 0700 /home/git/.ssh

Asegúrese de que el archivo /home/git/.ssh/authorized_keys tenga una máscara de 0600:

chmod 0600 /home/git/.ssh/authorized_keys

Reemplace / home / git con cualquiera que sea su directorio de inicio para el usuario 'git', si fuera diferente en el tutorial. Si no se trata de permisos, deje un comentario y veremos qué más podría ser el problema.


Ese puede haber sido el problema. Sé que puedo clonar usando git clone git @ {hostname}: {workspace} / {repository} en mi Mac. Desafortunadamente, dejé mi máquina Windows en el trabajo, así que tendré que intentarlo mañana. ¿La autenticación de clave pública / privada no funciona a través de HTTP con Gitlab? Tenía la impresión de que así funcionaba Github, pero podría estar equivocado al respecto.
greyfox

La autenticación de clave pública / privada solo funciona a través de SSH. Si usa HTTP, deberá usar su nombre de usuario y contraseña para hacer cualquier cosa. Si está utilizando una nueva versión de Git, como v1.8, debería solicitarle un nombre de usuario y contraseña. Las versiones anteriores de Git no hacen esto, por lo que debe agregar su nombre de usuario y contraseña en línea del control remoto (es decir https://username:password@git.server.com/repo.git)
jaseeey

Ahhhh eso tiene mucho más sentido ahora. Entonces, ¿la aplicación GitHub para Windows almacena las credenciales? ¡Muchísimas gracias por la ayuda!
greyfox

No he usado mucho la aplicación GitHub de Windows, pero creo que de memoria requería un inicio de sesión cuando la abres, por lo que diría que almacena las credenciales de acceso para ahorrarte el dolor de ingresarlas todo el tiempo.
jaseeey

1

Compruebe que solo tiene un registro para su clave pública (que se importó a través de la cara web) /home/git/.ssh/authorized_keysy que esta clave tiene el prefijo y el título de gitlab. En otras palabras, si ha agregado la misma clave manualmente antes de instalar gitlab, elimínela.


Puede tener varias claves allí y podrá iniciar sesión siempre que su clave privada pueda coincidir ...
jaseeey

@ Jason, acabo de editar para explicar con más precisión
sinm

Gracias, esto fue para mí. Había puesto mi clave ssh manualmente antes de usar Gitlab para agregar una clave y las claves duplicadas causaron problemas.
6 pies Dan

1

También recomendaría verificar que el usuario tenga el permiso adecuado para clonar / jalar / empujar en gitlab. Acabo de pasar demasiado tiempo buscando configuraciones ssh / https, cuando el motivo del problema era que el usuario en gitlab no tenía suficientes permisos ...


1

En mi situación, instalé gitlab a través de paquetes de FreeBSD. Gitlab SSH no funcionó. La causa de esto fue un directorio de inicio incorrecto para git: (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

Cambié esto a:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

Esto puede suceder si el host tiene un '-' en su nombre. (Aunque esto es legal de acuerdo con RFC 952 ).

ssh me solicita una contraseña para cualquier host que tenga un '-' en su nombre. Esto parece ser simplemente un problema con el análisis del archivo de configuración ssh porque agregar un alias a ~ / .ssh / config (y usar ese alias en mis URL remotas de git) resolvió el problema.

En otras palabras, intente poner algo como lo siguiente en su C: / Users / {username} /. Ssh / config

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

y donde tienes un control remoto de la forma

origin  git@a-b.domain:repo-name.git

eliminarlo y luego volver a agregarlo usando el formulario

origin  git@a:repo-name.git

1

Si está utilizando variables de entorno para pasar la clave, debe codificarlas en base64, de lo contrario, probablemente fallarán con un error al solicitar su frase de contraseña. Esto significa que la clave está dañada. Si tú ves:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

Luego, base64 codifica la variable SSH_PRIVATE_KEY. Si estás en OS X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

lo codificará y lo copiará a su portapapeles. Ahora cambie la línea de script .gitlab-ci.yml a

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

Mi problema fue que el archivo de claves privadas id_rsa creado y guardado por puttygen tiene un formato diferente al creado desde una máquina ubuntu. Después de crear un par de claves de la máquina ubuntu, copie estos archivos nuevamente en la máquina Windows en la carpeta% UserProfile% .ssh, luego agregue la nueva clave pública generada a Gitlab. No más permisos denegados para mí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.