14 votes

Quels "droits d'accès" pourraient bloquer l'accès à un dépôt gitlab ?

J'essaie de configurer gitlab (6.5.1) sur un nouveau serveur propre. Tout semble fonctionner, mais git est incapable de pousser vers un quelconque projet. En suivant les commandes de la page du projet nouvellement créé et en poussant sur le serveur distant via ssh, on obtient les résultats suivants :

$ git push -u origin master
fatal: Could not read from remote repository.

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

Il semble que ce soit un problème assez courant. Malheureusement, il semble avoir un certain nombre de causes potentielles et aucune d'entre elles ne semble correspondre. De numéro 3424 sur une ancienne version et diverses autres sources en ligne, j'ai vu et vérifié les suggestions suivantes :

  • Clés ssh restantes

    C'est une installation propre, sans restes. Ma clé a été ajoutée au fichier des clés autorisées correctement et c'est la seule qui est listée.

  • L'exécution de ssh avec la journalisation de débogage montre des erreurs liées aux variables d'environnement Ruby.

    Le mien est propre. Débogage SSH montre une connexion réussie. Tout ce qui concerne l'échange d'authentification est normal, alors c'est la fin de la sortie :

    debug1: Sending command: git-receive-pack 'username/reponame.git'
    debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
    debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
    debug1: channel 0: free: client-session, nchannels 1
    debug1: fd 0 clearing O_NONBLOCK
    debug1: fd 1 clearing O_NONBLOCK
  • Problèmes avec l'environnement gitlab-Shell.

    Contrairement à beaucoup d'autres avec le même message d'erreur ci-dessus, ma vérification gitlab-Shell Shell renvoie un bulletin de santé propre :

    % sudo -u gitlab -H ~gitlab/gitlab-shell/bin/check   
    Check GitLab API access: OK
    Check directories and files: 
            /var/lib/gitlab/repositories: OK
            /var/lib/gitlab/.ssh/authorized_keys: OK
    Test redis-cli executable: redis-cli 2.8.5
    Send ping to redis server: PONG
  • Redémarrer {unicorn,sidekiq,redis}

    Les rapports indiquant que le redémarrage d'un ou plusieurs services résout le problème ne semblent pas s'appliquer ici. Il ne s'agit pas d'un problème intermittent que le redémarrage d'un démon permet de résoudre.

  • Le repo n'est pas créé physiquement

    Mais c'est le cas. La première fois, à chaque fois, le repo git nu en ~gitlab/repositories/username/reponame.git est créé à chaque fois et semble avoir les bonnes permissions.

  • Gitlab-Shell ne peut pas se connecter au serveur API à cause A) de problèmes de DNS, B) d'une mauvaise liaison ip/port/interface C) de l'absence ou de la présence d'un slash de fin de ligne.

    La vérification du script indique que l'accès à l'API est correct.

    Je n'utilise pas nginx, donc le problème de liaison IP par défaut qui y est lié est sans objet.

    J'ai essayé les deux *:8080 y 127.0.0.1:8080 pour la valeur d'écoute dans unicorn.yml .

    En outre, j'ai essayé plusieurs itérations de localhost, 127.0.0.1 et le nom de domaine entièrement qualifié (qui est bien résolu par le DNS) avec et sans les slashs de fin de ligne dans la ligne de commande. shell.yml en vain. J'ai également essayé de le connecter directement au serveur Licorne sur le port 8080 au lieu de l'hôte SSL / proxy Apache sur le port 80. Rien ne semble faire de différence. Mon certificat est le suivant no auto-signés et fonctionnent bien pour les navigateurs, mais j'ai essayé de paramétrer self_signed_cert: true de toute façon. Rien.

  • Les chemins git rapportés sont incorrects, ajoutez le chemin entièrement qualifié à partir de la maison de l'utilisateur de gitlab.

    Cela semble être une suggestion légitime si le gitlab-Shell ne fait pas déjà quelque chose pour corriger cela, mais j'ai essayé de modifier git remote add origin gitlab@server:username/reponame.git à "git remote add origin gitlab@server:repositories/username/reponame.git" en vain. Même erreur.

Telle semble être la litanie des solutions proposées, mais aucune d'entre elles ne semble correcte. Note I suis capable pour pousser sur le http. L'invite de connexion accepte mon nom d'utilisateur et mon mot de passe ldap et accepte un push. Ce n'est un problème qu'en essayant d'utiliser SSH. En testant uniquement la partie connexion ssh avec ssh -T gitlab@server fonctionne bien.

Qu'est-ce qui pourrait causer cette erreur ?

Comment faire pour déboguer un tel problème dans gitlab ? Il ne semble pas qu'il y ait quoi que ce soit de pertinent dans ~gitlab/gitlab-shell/gitlab-shell.log . Où trouver un message d'erreur plus informatif ?

0 votes

Quelle est la sortie de : "ssh -vv gitlab@server" ? ??

0 votes

@DrGkill Rien d'intéressant (à mes yeux), voyez par vous-même .

0 votes

Vérifiez dans votre sshd_config si gitlab est autorisé pour la connexion externe. Je dirais que 2 coupables possibles : SSH ou gitlab-Shell. Que dit auth.log lorsque gitlab se connecte ?

7voto

tom Points 131

Je suis presque sûr que vous avez un problème de configuration entre SSH et le système à cause de ce message de débogage SSH :

client_input_channel_req: channel 0 rtype eow@openssh.com reply 0

Vous recevez ce message immédiatement après une authentification réussie et aucun message de bash, ce qui signifie qu'aucun programme n'a été lancé après la connexion.

Regardez dans votre fichier passwd si vous avez les bons paramètres pour l'utilisateur gitlab :

gitlab:x:1011:1012:GitLab,,,:/path/to/gitlab:/bin/bash

Vérifiez que bash n'a pas de choses bizarres dans les fichiers de configuration tels que

  • bash.bashrc
  • .profil
  • .bashrc

Puis passez au niveau supérieur : Gitlab-Shell. Vérifiez le /chemin/vers/gitlab/.ssh/clés_autorisées a la configuration ci-dessous :

command="/path/to/gitlab/gitlab-shell/bin/gitlab-shell key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa A...

avec /path/to/gitlab/gitlab-Shell/bin/gitlab-Shell appartenant à l'utilisateur de gitlab et exécutable.

Vous pouvez vous assurer que gitlab-Shell est pleinement opérationnel en lançant la commande :

# /path/to/gitlab-shell/bin/gitlab-shell
Welcome to GitLab, Anonymous!

Si la connexion à distance fonctionne réellement et est correctement connectée à gitlab-Shell, vous devriez obtenir le même message de bienvenue (mais correspondant à l'utilisateur dont vous avez utilisé la clé ssh pour vous connecter) avant qu'il ne vous abandonne si vous essayez de vous connecter à distance.

$ ssh gitlab@server
Welcome to GitLab, <your user's full name>!
Connection to <server> closed.

Aucun message ici indique probablement que ssh ne vous connecte pas du tout à gitlab.

Enfin, vérifiez votre configuration gitlab-Shell (config.yml) et vérifiez si :

http_settings:
    # trailing slash is important
    gitlab_url: "https://remote_server/"
    ca_file: /path/to/webserver/certificate.crt

et finalement :

    self_signed_cert: false

0 votes

Doh. <bip-bip> Vous étiez sur la bonne voie depuis le début. L'utilisateur de gitlab a été assigné /bin/false . Soit le paquet Arch ne définit pas le Shell correctement lors de l'ajout de cet utilisateur, soit je l'ai cassé quelque part dans le processus de mise en œuvre de l'authentification ldap sur ce système. Merci pour tous ces efforts.

0 votes

Merci pour la réponse, cela m'a aidé à déboguer. Un autre problème est que lorsque vous avez activé le transfert de clé ssh, vous envoyez la mauvaise clé à gitlab qui ne peut pas vous identifier. Lorsque vous vous connectez à gitlab, vous obtenez également Welcome Anonymous. Désactivez simplement la transmission de clé sur votre serveur de saut avec ssh -a.

0 votes

J'ai eu le même problème que Caleb, et j'ai aussi trouvé par moi-même que pour que ça marche il faut mettre un Shell à la place de /bin/{false,true,nologin}. Mais en fait l'utilisateur est créé sans Shell volontairement lors de l'installation (voir : gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/ ) sudo adduser --disabled-login --gecos 'GitLab' git . Cela devrait donc fonctionner sans Shell. Je suis toujours à la recherche d'une autre solution.

0voto

AllanT Points 101

J'ai eu le même problème et après des jours de recherche sur Google et sur Stack Overflow, j'ai finalement trouvé mon problème. Je voulais le faire par écrit en me connectant à Gitlab, au cas où quelqu'un d'autre aurait le même problème.

J'ai trouvé ma solution ici : https://stackoverflow.com/questions/17307154/git-bash-push-to-bitbucket-ignores-ssh-key

Je suis sous Windows et le problème était que le Git Bash essayait d'obtenir l'emplacement de sa clé SSH à partir de plink.exe, qui est installé avec Putty.

La solution était de supprimer la variable d'environnement GIT_SSH. Ensuite, tout a fonctionné.

J'espère que cela aidera quelqu'un d'autre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X