Ich versuche, Gitlab (6.5.1) auf einem frischen sauberen Server einzurichten. Alles scheint zu funktionieren, aber Git ist nicht in der Lage, auf ein Projekt zu pushen. Befolgen Sie die Befehle von der neu erstellten Projektseite und drücken Sie auf die Fernbedienung über ssh:
$ 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.
Dies scheint ein recht verbreitetes Problem zu sein. Leider scheint es eine Reihe möglicher Ursachen zu geben, und keine davon scheint zu stimmen. Ab Ausgabe 3424 einer alten Version und verschiedenen anderen Online-Quellen habe ich die folgenden Vorschläge gesehen und geprüft:
Übrig gebliebene SSH-Schlüssel
Dies ist ein sauberes Setup ohne Reste. Mein Schlüssel wurde der Datei mit den autorisierten Schlüsseln ordnungsgemäß hinzugefügt und ist der einzige aufgeführte Schlüssel.
Wenn Sie ssh mit der Debug-Protokollierung ausführen, werden Fehler im Zusammenhang mit Ruby-Umgebungsvariablen angezeigt.
Meins kommt sauber hoch. SSH-Debug zeigt eine erfolgreiche Verbindung. Alles, was mit dem Authentifizierungs-Handshaking zu tun hat, ist normal. Dies ist das Ende der Ausgabe:
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
Probleme mit der Gitlab-Shell-Umgebung.
Im Gegensatz zu vielen anderen mit derselben Fehlermeldung oben gibt mein gitlab-shell-Überprüfungsskript eine saubere Gesundheitsbescheinigung zurück:
% 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
Neustart {Einhorn, Sidekiq, Redis}
Die Berichte, dass ein Neustart eines oder mehrerer Dienste dies beseitigt, scheinen hier nicht zuzutreffen. Dies ist kein vorübergehendes Problem, das durch das erneute Laden eines Daemons behoben wird.
Das Repo wird nicht physisch erstellt
Aber es ist. Bei jedem ersten Mal wird das Bare-Git-Repo-In
~gitlab/repositories/username/reponame.git
jedes Mal erstellt und scheint die richtigen Berechtigungen zu haben.Gitlab-Shell kann nicht mit dem API-Server kommunizieren, weil A) DNS-Probleme, B) falsche IP- / Port- / Schnittstellenbindung, C) kein / kein abschließender Schrägstrich vorhanden sind.
Das Überprüfungsskript besagt, dass der API-Zugriff in Ordnung ist.
Ich verwende kein nginx, daher ist das damit verbundene IP-Bindungsproblem nicht zutreffend.
Ich habe beides probiert
*:8080
und127.0.0.1:8080
für den Hörwert inunicorn.yml
.Darüber hinaus habe ich verschiedene Iterationen von localhost, 127.0.0.1 und dem vollqualifizierten Domain-Namen (DNS-Auflösung in Ordnung) mit und ohne Schrägstriche
shell.yml
ohne Erfolg ausprobiert. Ich habe auch versucht, dies direkt mit dem Einhorn-Server auf Port 8080 anstelle des Apache SSL / Proxy-Hosts auf Port 80 zu verbinden. Nichts scheint einen Unterschied zu machen. Mein Zertifikat ist nicht selbst signiert und funktioniert für Browser einwandfrei, aber ich habe esself_signed_cert: true
trotzdem versucht . Nichts.Die gemeldeten Git-Pfade sind falsch. Fügen Sie einen vollständig qualifizierten Pfad von der Startseite des Gitlab-Benutzers hinzu.
Dies scheint ein legitimer Vorschlag zu sein, wenn die Gitlab-Shell dies nicht bereits korrigiert, aber ich habe erfolglos versucht,
git remote add origin gitlab@server:username/reponame.git
zu "git remote add origin gitlab @ server: repositories / username / reponame.git" zu wechseln. Gleicher Fehler.
Dies scheint die Litanei der vorgeschlagenen Lösungen zu sein, aber keine davon scheint richtig zu sein. Hinweis: Ich kann über http pushen. Die Anmeldeaufforderung akzeptiert meinen ldap-Benutzernamen und mein Passwort und akzeptiert einen Push. Dies ist nur ein Problem bei der Verwendung von SSH. Das Testen nur des SSH-Login-Teils mit ssh -T gitlab@server
funktioniert einwandfrei.
Was könnte diesen Fehler sonst noch verursachen?
Wie geht man beim Debuggen eines solchen Problems in gitlab vor? Es scheint überhaupt nichts Relevantes in ~gitlab/gitlab-shell/gitlab-shell.log
. Wo wäre eine aussagekräftigere Fehlermeldung zu finden?
quelle
Antworten:
Ich bin mir ziemlich sicher, dass Sie aufgrund dieser SSH-Debug-Meldung ein Konfigurationsproblem zwischen SSH und dem System haben:
Sie erhalten diese Nachricht sofort nach einer erfolgreichen Authentifizierung und keine Nachricht von bash, was bedeutet, dass nach der Anmeldung kein Programm gestartet wurde.
Beobachten Sie in Ihrer passwd-Datei, ob Sie die richtigen Einstellungen für den gitlab-Benutzer haben:
Stellen Sie sicher, dass bash in Konfigurationsdateien wie
Gehen Sie dann zur nächsthöheren Ebene: Gitlab-Shell Überprüfen Sie, ob /path/to/gitlab/.ssh/authorized_keys die folgende Konfiguration hat:
mit / path / to / gitlab / gitlab-shell / bin / gitlab-shell, die dem gitlab-Benutzer gehört und ausführbar ist.
Sie können sicher sein, dass gitlab-shell voll funktionsfähig ist, indem Sie den folgenden Befehl ausführen:
Wenn die Remote-Anmeldung tatsächlich funktioniert und ordnungsgemäß mit der Gitlab-Shell verbunden ist, sollten Sie dieselbe Begrüßungsnachricht erhalten (die jedoch mit dem Benutzer übereinstimmt, dessen SSH-Schlüssel Sie zum Anmelden verwendet haben), bevor Sie beim Versuch, sich remote anzumelden, abgewiesen werden.
Keine Nachricht hier weist wahrscheinlich darauf hin, dass ssh Sie überhaupt nicht mit gitlab verbindet.
Überprüfen Sie abschließend Ihre Gitlab-Shell-Konfiguration (config.yml) und überprüfen Sie, ob:
und schließlich :
quelle
/bin/false
. Entweder hat das Arch-Paket die Shell beim Hinzufügen dieses Benutzers nicht richtig eingestellt, oder ich habe sie während des Implementierens der LDAP-Authentifizierung auf diesem System beschädigt. Vielen Dank für die Mühe.sudo adduser --disabled-login --gecos 'GitLab' git
. Also sollte es ohne Shell funktionieren. Ich suche noch nach einer anderen Lösung.Ich hatte das gleiche Problem und nach Tagen des Googelns und Durchsuchens von Stack Overflow fand ich endlich mein Problem. Ich wollte dies schriftlich mit Gitlab in Verbindung bringen, nur für den Fall, dass jemand anderes das gleiche Problem hatte.
Ich habe meine Lösung hier gefunden: /programming/17307154/git-bash-push-to-bitbucket-ignores-ssh-key
Ich arbeite unter Windows und das Problem war, dass Git Bash versuchte, seinen SSH-Schlüssel von plink.exe abzurufen, das mit Putty installiert wurde.
Die Lösung bestand darin, die Umgebungsvariable GIT_SSH zu löschen. Dann hat alles geklappt.
Hoffe das hilft jemandem da draußen.
quelle