web-dev-qa-db-fra.com

Quels «droits d'accès» pourraient bloquer l'accès à un référentiel gitlab?

J'essaie de configurer gitlab (6.5.1) sur un nouveau serveur propre. Tout semble fonctionner, mais git ne peut pas pousser vers n'importe quel projet. Suivre les commandes de la page de projet nouvellement créée et pousser vers la télécommande via ssh donne:

$ 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.

Cela semble être un problème assez courant. Malheureusement, il semble avoir un certain nombre de causes potentielles et aucune 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

    Il s'agit d'une configuration propre sans restes. Ma clé a été correctement ajoutée au fichier des clés autorisées et est la seule répertoriée.

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

    Le mien est propre. Débogage SSH affiche une connexion réussie. Tout ce qui concerne la négociation de l'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 [email protected] 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, mon script de vérification gitlab-Shell renvoie un bilan 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émarrez {Unicorn, sidekiq, redis}

    Les rapports selon lesquels le redémarrage d'un ou plusieurs services efface ce problème ne semblent pas s'appliquer ici. Ce n'est pas un problème intermittent que la relecture d'un démon corrige.

  • Le dépôt n'est pas créé physiquement

    Mais il est. La première fois à chaque fois, le dépôt git nu dans ~gitlab/repositories/username/reponame.git est créé à chaque fois et semble disposer des autorisations appropriées.

  • Gitlab-Shell ne peut pas parler au serveur API car A) des problèmes DNS, B) une liaison IP/port/interface incorrecte C) ne pas avoir/avoir une barre oblique de fin.

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

    Je n'exécute pas nginx, donc le problème de liaison IP par défaut lié à cela est n/a.

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

    Au-delà de cela, j'ai essayé diverses itérations de localhost, 127.0.0.1 et le nom de domaine complet (qui résout très bien le DNS) avec et sans barres obliques dans Shell.yml en vain. J'ai également essayé de câbler ceci directement au serveur Unicorn sur le port 8080 au lieu de l'hôte Apache SSL/proxy sur le port 80. Rien ne semble faire de différence. Mon certificat est pas auto-signé et fonctionne bien pour les navigateurs, mais j'ai essayé de définir self_signed_cert: true en tous cas. Rien.

  • Les chemins git signalés sont incorrects, ajoutez un chemin qualifié complet depuis la page d'accueil de l'utilisateur gitlab.

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

Cela semble être la litanie de solutions suggérées, mais aucune ne semble juste. Notez que je suis capable pour pousser sur http. L'invite de connexion accepte mon nom d'utilisateur et mon mot de passe LDAP et accepte un push. Ce n'est qu'un problème en essayant d'utiliser SSH. Tester uniquement la partie de connexion ssh avec ssh -T gitlab@server fonctionne très bien.

Qu'est-ce qui pourrait provoquer cette erreur?

Comment faire pour déboguer un tel problème dans gitlab? Il ne semble rien y avoir de pertinent du tout dans ~gitlab/gitlab-Shell/gitlab-Shell.log. Où trouver un message d'erreur plus informatif?

14
Caleb

Je suis 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 [email protected] 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 rien de bizarre dans les fichiers de configuration tels que

  • bash.bashrc
  • .profil
  • .bashrc

Montez ensuite au niveau supérieur: Gitlab-Shell Vérifiez que / path/to/gitlab/.ssh/authorized_keys 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 / chemin/vers/gitlab/gitlab-Shell/bin/gitlab-Shell appartenant à l'utilisateur et à l'exécutable gitlab.

Vous pouvez être sûr 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 et est correctement connectée au gitlab-Shell, vous devriez recevoir le même message de bienvenue (mais correspondant à l'utilisateur dont vous avez utilisé la clé ssh pour vous connecter) avant de vous jeter 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 n'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 éventuellement :

    self_signed_cert: false
7
DrGkill

J'ai eu ce même problème et après des jours de recherche sur Google et de recherche de débordement de pile, j'ai finalement trouvé mon problème. Je voulais que cela soit écrit par écrit connecté à 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 Git Bash essayait d'obtenir son emplacement de 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 aide quelqu'un là-bas.

0
AllanT