web-dev-qa-db-fra.com

Gitlab ne fonctionne pas avec les clés SSH

J'ai des problèmes avec Gitlab. J'ai utilisé le guide suivant pour installer et configurer Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . L'installation semblait bien se passer et tout. L'application Web semble bien fonctionner. Cependant, je ne peux pas cloner, tirer, pousser, je ne peux pas utiliser Gitlab. J'ai vu 403 erreurs avec HTTP et autorisation refusée lors de la tentative de clonage via SSH.

Je me suis assuré que mes clés privées sont configurées correctement sur Windows et OS X. Je peux voir les clés publiques sur le serveur. J'ai ajouté ce qui suit à mon fichier de configuration dans ~/.ssh.config

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

Voici ce que je vois dans/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

Le /var/log/message n'a pas joué de rôle lorsque j'ai essayé d'utiliser git ou ssh

Je ne sais pas où aller d'ici. Aucune suggestion?

Je ne sais pas ce que vous entendez par SSH en utilisant le nom d'utilisateur git. Le guide que j'ai utilisé n'a pas créé de mot de passe pour l'utilisateur git et a déclaré que l'utilisateur ne peut pas être utilisé pour se connecter.

10
greyfox

À condition que vous ayez chargé votre clé privée sur votre client, il semble que cela puisse être un problème d'autorisations sur le répertoire personnel de l'utilisateur 'git' et le répertoire .ssh.

Veuillez essayer de changer votre répertoire/home/git en un masque de 0711:

chmod 0711 /home/git

Assurez-vous que le répertoire /home/git/.ssh a un masque de 0700:

chmod 0700 /home/git/.ssh

Assurez-vous que le fichier /home/git/.ssh/authorized_keys a un masque de 0600:

chmod 0600 /home/git/.ssh/authorized_keys

Remplacez/home/git par quel que soit votre répertoire personnel pour l'utilisateur 'git', s'il était différent dans le tutoriel. S'il ne s'agit pas d'autorisations, veuillez laisser un commentaire et nous verrons quel pourrait être le problème.

10
jaseeey

Dans ma situation, j'ai installé gitlab via des packages FreeBSD. Gitlab SSH ne fonctionnait pas. La cause de ceci était un mauvais répertoire personnel pour git: (vipw)

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

J'ai changé cela en:

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

Vérifiez que vous n'avez qu'un seul enregistrement pour votre clé publique (qui a été importée via la face Web) dans /home/git/.ssh/authorized_keys et cette clé a le préfixe et le titre de gitlab. En d'autres termes, si vous avez ajouté la même clé manuellement avant d'installer gitlab, supprimez-la.

1
sinm

Je recommanderais également de vérifier que l'utilisateur a la permission appropriée de cloner/tirer/pousser dans gitlab. Je viens de passer trop de temps à parcourir les configurations ssh/https, alors que la raison du problème était que l'utilisateur dans gitlab n'avait pas assez d'autorisations ...

1
shtolik

Cela peut se produire si l'hôte a un "-" dans son nom. (Même si cela est légal selon RFC 952 .)

ssh me demande un mot de passe pour tout hôte qui se trouve avoir un "-" dans son nom. Cela semble être purement un problème avec l'analyse du fichier de configuration ssh car l'ajout d'un alias à ~/.ssh/config (et l'utilisation de cet alias dans mes URL distantes git) a résolu le problème.

En d'autres termes, essayez de mettre quelque chose comme ceci dans votre C:/Users/{username} /. Ssh/config

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

et où vous avez une télécommande du formulaire

Origin  [email protected]:repo-name.git

supprimez-le puis ré-ajoutez-le en utilisant le formulaire

Origin  git@a:repo-name.git
1
SensorSmith

Si vous utilisez des variables d'environnement pour transmettre la clé, vous devez les coder en base64, sinon elles échoueront probablement avec une erreur vous demandant votre phrase secrète. Cela signifie que la clé est corrompue. Si tu vois:

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

Ensuite, base64 code la variable SSH_PRIVATE_KEY. Si vous êtes sous OS X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

va l'encoder et le copier dans votre presse-papiers. Maintenant, changez la ligne de script .gitlab-ci.yml en

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

Mon problème était que le fichier de clés privées id_rsa créé et enregistré par puttygen a un format différent de celui créé à partir d'une machine ubuntu. Après avoir créé une paire de clés à partir de la machine ubuntu, copiez ces fichiers sur la machine Windows sous le dossier% UserProfile% .ssh, puis ajoutez la nouvelle clé publique générée à Gitlab. Plus aucune autorisation refusée pour moi

0
Quang Le

L'exécution de eval $(ssh-agent) a résolu mon problème.

0
michalzuber