1 votos

GitLab - No acepta empujes a través de SSH [pide la contraseña de SSH], funciona con HTTP?

He buscado múltiples soluciones para este problema, incluyendo: https://serverfault.com/questions/515395/gitlab-unable-to-push-via-ssh Gitlab no funciona con claves SSH http://community.bitnami.com/t/unable-to-make-a-ssh-connection-to-gitlab-but-http-push-and-clone-are-working/14939


Bien, pues... hoy he instalado GitLab. He seguido este manual . Cuando llegué a crear el usuario, "git" estaba en uso así que decidí usar "gitlab". Si esto fue una mala decisión, puedo volver atrás y tratar de ver lo que está utilizando "git" y por qué y si puedo detener eso y darle a GitLab.

Básicamente, cuando empujo GitLab, estoy tratando de usar la dirección SSH: gitlab@git.example.com:user/repo. Cuando uso "git push origin master" (con origin apuntando a la dirección mencionada), me pide la contraseña del usuario "gitlab" al servidor SSH. Si la introduzco, GitLab me dice entonces que "user/repo" no parece ser un repositorio y luego sale.

La salida de "ssh -vvT" es:

C:\Users\Jake>ssh -vvvT gitlab@git.redacted.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug2: ssh_connect: needpriv 0
debug1: Connecting to git.redacted.com [redacted] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Jake/.ssh/identity type -1
debug3: Not a RSA1 key file /c/Users/Jake/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'Proc-Type:'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'DEK-Info:'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /c/Users/Jake/.ssh/id_rsa type 1
debug3: Not a RSA1 key file /c/Users/Jake/.ssh/id_dsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'Proc-Type:'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'DEK-Info:'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /c/Users/Jake/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubu
ntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-g
roup-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour1
28,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-c
tr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour1
28,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-c
tr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@open
ssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@open
ssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-
sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hel
lman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ssh-ed25519
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour12
8,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,ae
s128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndae
l-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour12
8,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,ae
s128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndae
l-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,um
ac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hma
c-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@opens
sh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-1
28@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh
.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,um
ac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hma
c-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@opens
sh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-1
28@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh
.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_init: found hmac-md5
debug1: kex: server->client aes128-cbc hmac-md5 none
debug2: mac_init: found hmac-md5
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 119/256
debug2: bits set: 524/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug3: check_host_in_hostfile: filename /c/Users/Jake/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 1
debug3: check_host_in_hostfile: filename /c/Users/Jake/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 1
debug1: Host 'git.majornoob.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Jake/.ssh/known_hosts:1
debug2: bits set: 515/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /c/Users/Jake/.ssh/identity (0x0)
debug2: key: /c/Users/Jake/.ssh/id_rsa (0xa01b360)
debug2: key: /c/Users/Jake/.ssh/id_dsa (0xa01b378)
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Jake/.ssh/identity
debug3: no such identity: /c/Users/Jake/.ssh/identity
debug1: Offering public key: /c/Users/Jake/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering public key: /c/Users/Jake/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
gitlab@git.redacted.com's password:

C:\Users\Jake>

Parece que tiene problemas para leer mi(s) clave(s) SSH. No estoy seguro de lo que está sucediendo.

He probado dos claves SSH diferentes con dos tipos de encriptación diferentes utilizando los siguientes comandos:

ssh-keygen -t rsa -C "redacted@gmail.com"
ssh-keygen -t dsa -C "redacted@gmail.com"

Aquí está la salida si intento empujar usando el protocolo SSH:

C:\Users\Jake\Documents\Development\test>git push origin master
gitlab@git.redacted.com's password:
fatal: 'jake/test.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

C:\Users\Jake\Documents\Development\test>

¿Por qué se pide la contraseña SSH? Quiero que use las claves.

Las claves están en la instalación de GitLab, aquí hay una prueba de ello: SSH_KEYS

No sé a dónde ir desde aquí o qué otra información puedo proporcionar para facilitar el diagnóstico de mi problema. Por favor, ayúdenme. Estaré encantado de responder a cualquier pregunta que pueda facilitar la solución de este problema.

Gracias de antemano.


editar: Cuando uso "ssh -vvT gitlab@git.redacted.com" y realmente introduzco la contraseña del usuario, me muestra el MOTD de Ubuntu. Estoy bastante 200% seguro de que esto no debería suceder.

1voto

stonewareslord Puntos 136

Tienes razón. El MOTD debería no a cualquier usuario. Gitlab tiene su propia Shell incorporada que se encarga de los usuarios, pero esa Shell sólo se ejecuta cuando un usuario inicia sesión con su clave privada, lo que no te está funcionando. Debido a que el inicio de sesión como git con una contraseña te lleva a un prompt, debes eliminar la contraseña para git:

sudo passwd -d git

Y luego desactivar el inicio de sesión con bash ejecutando sudo vim /etc/passwd , encontrar el usuario git, y al final donde dice /bin/bash Sustituirlo por /bin/nologin .

En cuanto a las llaves, asegúrate de que tu ordenador cliente puede utilizarlas. Intenta hacer sshing a localhost. Debería pedirte una contraseña. Cierre la sesión, agregue la clave ssh del cliente a sí mismo con:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #This should not require root

A continuación, intente iniciar la sesión en localhost de nuevo. Si no te pide una contraseña, sabes que tu cliente está configurado correctamente.

Si tu cliente está bien, intenta depurar el servidor. ANTES Si lo hace, borre sus llaves de la captura de pantalla. A continuación, asegúrese de que Gitlab tiene acceso completo al directorio /home/git/.ssh ejecutando sudo chmod -R git /home/git/.ssh . Vuelva a añadir sus llaves y luego ejecute sudo cat /home/git/.ssh/authorized_keys y ver si sus llaves están allí.

Si esto no funciona, comprueba los registros de gitlab ejecutando tailf /home/git/gitlab/{LOG}.log y luego reemplazar {LOG} con unicorn , application , production o githost y luego intente añadir sus llaves.

RECUERDE borrar sus claves antes de hacer nada. Las claves se almacenan en la base de datos y se supone que están almacenadas en /home/git/.ssh/authorized_keys. Si están en la base de datos, pero no en el archivo, podrías tener problemas.

1voto

Jonas Puntos 11

Mi situación

Servidor: Ubuntu 14.04.1 Actualizando a las últimas versiones de paquetes (sudo apt-get update && sudo apt-get dist-upgrade). Gitlab: 6.9.0 (la versión de gitlab no importa realmente).

Todo funcionaba perfectamente antes de actualizar y reiniciar el servidor, con claves ssh correctas y todo lo relacionado. Pero después de actualizar los paquetes, todos los usuarios fueron impedidos para una operación normal, pero pidiendo la contraseña del usuario "git".

¿Qué he hecho?

Después de varias horas, encontré lo que realmente ocurrió: nuevas comprobaciones de permisos en /home/git al ejecutar los comandos git.

Pasos para comprobar si sirve para su caso:

  1. tail -f /var/log/auth.log
  2. Intenta hacer una operación git (como git remote update ).
  3. Comprueba el archivo de registro. Apareció una línea como esta: Authentication refused: bad ownership or modes for directory /home/git .
  4. Asegurar la propiedad git de /home/git : sudo chown git:git /home/git .
  5. Asegurar los permisos del directorio: sudo chmod 755 /home/git .
  6. Colocar en el repositorio git y hacer git remote update sin ningún problema.

¡¡¡Eso me funcionó!!!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: