Gitlab non funziona con le chiavi SSH


10

Sto riscontrando problemi con Gitlab. Ho usato la seguente guida per installare e configurare Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . L'installazione sembrava andare bene e tutto. L'applicazione Web sembra funzionare correttamente. Tuttavia non sono in grado di clonare, tirare, spingere, praticamente non posso usare Gitlab. Ho visto 403 errori con HTTP e l'autorizzazione negata durante il tentativo di clonare su SSH.

Mi sono assicurato che le mie chiavi private siano configurate correttamente su Windows e OS X. Posso vedere le chiavi pubbliche sul server. Ho aggiunto quanto segue al mio file di configurazione in ~ / .ssh.config

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

Questo è quello che vedo in / 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

Il /var/log/messageruolo non ha avuto quando ho provato a usare git o ssh

Non sono sicuro di dove andare da qui. Eventuali suggerimenti?

Non so cosa intendi per SSH usando git username. La guida che ho usato non ha creato una password per l'utente git e ha dichiarato che l'utente non può essere utilizzato per accedere.


Sei in grado di SSH sul server Git come utente 'git'? Puoi provare ad aggiungere il parametro '-vvv' per ottenere un ulteriore output sul perché la connessione viene chiusa? Potrebbe anche essere utile controllare i file / var / log / secure e / var / log / messages per vedere se ci sono errori.
Jaseeey,

Le chiavi pubbliche non sono impostate sul client: è necessario assicurarsi che le chiavi private siano sul client. Le chiavi pubbliche vanno sul server.
EEAA,

Aggiornato la mia domanda. Spero che questo aiuti
greyfox il

Risposte:


10

A condizione che tu abbia caricato la tua chiave privata sul tuo client, sembra che questo potrebbe essere un problema di permessi nella directory home dell'utente 'git' e nella directory .ssh.

Prova a cambiare la tua directory / home / git in una maschera di 0711:

chmod 0711 /home/git

Assicurarsi che la directory /home/git/.ssh abbia una maschera di 0700:

chmod 0700 /home/git/.ssh

Assicurarsi che il file /home/git/.ssh/authorized_keys abbia una maschera di 0600:

chmod 0600 /home/git/.ssh/authorized_keys

Sostituisci / home / git con qualunque sia la tua home directory per l'utente 'git', se fosse differente nel tutorial. Se non si tratta di autorizzazioni, ti preghiamo di lasciare un commento e vedremo cos'altro potrebbe essere il problema.


Potrebbe essere stato questo il problema. Sono in grado di clonare usando git clone git @ {hostname}: {workspace} / {repository} sul mio Mac. Purtroppo ho lasciato la mia macchina Windows al lavoro, quindi dovrò provarlo domani. L'autenticazione della chiave pubblica / privata non funziona su HTTP con Gitlab? Avevo l'impressione che fosse così che funzionava Github, ma potevo sbagliarmi.
Greyfox,

L'autenticazione con chiave pubblica / privata funziona solo su SSH. Se si utilizza HTTP, sarà necessario utilizzare il nome utente e la password per fare qualsiasi cosa. Se stai usando una nuova versione di Git, come la v1.8, allora dovrebbe chiederti un nome utente e una password. Le versioni precedenti di Git non lo fanno, quindi devi aggiungere il tuo nome utente e password in linea con il telecomando (es. https://username:password@git.server.com/repo.git)
jaseeey,

Ahhhh, ora ha molto più senso. Quindi l'app GitHub per Windows memorizza le credenziali? Grazie mille per l'aiuto!
Greyfox,

Non ho usato molto l'applicazione GitHub per Windows, ma penso che a memoria fosse necessario un login quando lo aprivi, quindi direi che memorizza le credenziali di accesso per evitare il dolore di inserirle continuamente.
Jaseeey,

1

Verifica di avere un solo record per la tua chiave pubblica (che è stata importata tramite la faccia web) /home/git/.ssh/authorized_keyse che questa abbia il prefisso e il titolo di gitlab. In altre parole, se hai aggiunto la stessa chiave manualmente prima di installare gitlab, rimuovila.


Puoi avere più chiavi lì dentro e sarai in grado di accedere a condizione che la tua chiave privata possa corrispondere ...
jaseeey,

@Jason, ho appena modificato per spiegare più precisamente
sinm

Grazie, questo è stato per me. Avevo inserito manualmente la mia chiave ssh prima di usare Gitlab per aggiungere una chiave e le chiavi duplicate causavano problemi.
6ft Dan

1

Consiglio anche di verificare che l'utente disponga delle autorizzazioni necessarie per clonare / pull / push in gitlab. Ho appena trascorso troppo tempo a cercare le configurazioni ssh / https, quando il motivo del problema era che l'utente in gitlab non aveva abbastanza autorizzazioni ...


1

Nella mia situazione ho installato gitlab tramite i pacchetti di FreeBSD. Gitlab SSH non ha funzionato. La causa di ciò era una home directory errata per git: (vipw)

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

Ho cambiato questo in:

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

1

Questo può accadere se l'host ha un '-' nel suo nome. (Anche se questo è legale secondo RFC 952. )

ssh mi chiede una password per qualsiasi host che abbia un '-' nel suo nome. Questo sembra essere puramente un problema con l'analisi del file di configurazione di ssh perché l'aggiunta di un alias a ~ / .ssh / config (e l'uso di tale alias nei miei URL remoti git) ha risolto il problema.

In altre parole, prova a inserire qualcosa come il seguente nel tuo C: / Users / {username} /. Ssh / config

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

e dove hai un telecomando del modulo

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

rimuoverlo e quindi aggiungerlo nuovamente utilizzando il modulo

origin  git@a:repo-name.git

1

Se stai usando variabili d'ambiente per passare la chiave, dovresti codificarle in base64, altrimenti probabilmente falliranno con un errore che richiede la tua passphrase. Ciò significa che la chiave è danneggiata. Se tu vedi:

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

Quindi base64 codifica la variabile SSH_PRIVATE_KEY. Se sei su OS X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

lo codificherà e lo copierà negli appunti. Ora cambia la riga di script .gitlab-ci.yml in

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


0

Il mio problema era che il file di chiavi private id_rsa creato e salvato da puttygen ha un formato diverso da quello creato da una macchina Ubuntu. Dopo aver creato una coppia di chiavi dalla macchina Ubuntu, copiare questi file nella macchina Windows nella cartella% UserProfile% .ssh, quindi aggiungere la nuova chiave pubblica generata a Gitlab. Niente più permesso negato per me

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.