it-swarm.com.de

Gitlab funktioniert nicht mit SSH-Schlüsseln

Ich habe Probleme mit Gitlab. Ich habe die folgende Anleitung verwendet, um Gitlab zu installieren und zu konfigurieren https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . Die Installation schien gut zu laufen. Die Webanwendung scheint gut zu funktionieren. Ich kann jedoch nicht klonen, ziehen, pushen, im Grunde kann ich Gitlab im Wesentlichen nicht verwenden. Ich habe 403 Fehler mit HTTP gesehen und die Berechtigung wurde verweigert, als versucht wurde, über SSH zu klonen.

Ich habe sichergestellt, dass meine privaten Schlüssel sowohl unter Windows als auch unter OS X korrekt eingerichtet sind. Ich kann die öffentlichen Schlüssel auf dem Server sehen. Ich habe meiner Konfigurationsdatei in ~/.ssh.config Folgendes hinzugefügt

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

Das sehe ich 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

Das /var/log/message spielte keine Rolle, als ich versuchte, git oder ssh zu verwenden

Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. Irgendwelche Vorschläge?

Ich weiß nicht, was Sie mit SSH unter Verwendung des Git-Benutzernamens meinen. In dem von mir verwendeten Handbuch wurde kein Kennwort für den Git-Benutzer erstellt und angegeben, dass der Benutzer nicht zum Anmelden verwendet werden kann.

10
greyfox

Vorausgesetzt, Sie haben Ihren privaten Schlüssel auf Ihren Client geladen, scheint dies ein Berechtigungsproblem für das Benutzerverzeichnis 'git' und das Verzeichnis .ssh zu sein.

Bitte versuchen Sie, Ihr Verzeichnis/home/git in eine Maske von 0711 zu ändern:

chmod 0711 /home/git

Stellen Sie sicher, dass das Verzeichnis /home/git/.ssh die Maske 0700 hat:

chmod 0700 /home/git/.ssh

Stellen Sie sicher, dass die Datei /home/git/.ssh/authorized_keys eine Maske von 0600 hat:

chmod 0600 /home/git/.ssh/authorized_keys

Ersetzen Sie/home/git durch ein beliebiges Home-Verzeichnis für den Benutzer 'git', sofern dies im Lernprogramm anders war. Wenn es keine Berechtigungen sind, lassen Sie bitte einen Kommentar und wir werden sehen, was sonst das Problem sein könnte.

10
jaseeey

In meiner Situation habe ich gitlab über FreeBSD-Pakete installiert. Gitlab SSH hat nicht funktioniert. Die Ursache dafür war ein falsches Home-Verzeichnis für git: (vipw)

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

Ich habe das geändert in:

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

Stellen Sie sicher, dass Sie nur einen Datensatz für Ihren öffentlichen Schlüssel (der über das Webface importiert wurde) in /home/git/.ssh/authorized_keys Haben und dieser Schlüssel das Präfix und den Titel von gitlab hat. Mit anderen Worten, wenn Sie denselben Schlüssel vor der Installation von gitlab manuell hinzugefügt haben, entfernen Sie ihn.

1
sinm

Ich würde auch empfehlen zu überprüfen, ob der Benutzer die richtige Berechtigung zum Klonen/Ziehen/Pushen von Gitlab hat. Ich habe einfach zu viel Zeit damit verbracht, ssh/https-Konfigurationen durchzusehen, als der Grund für das Problem darin bestand, dass Benutzer in gitlab nicht über genügend Berechtigungen verfügten ...

1
shtolik

Dies kann passieren, wenn der Host ein '-' im Namen hat. (Auch wenn dies gemäß RFC 952 legal ist.)

ssh fordert mich zur Eingabe eines Kennworts für jeden Host auf, dessen Name zufällig ein '-' enthält. Dies scheint ein reines Problem beim Parsen von SSH-Konfigurationsdateien zu sein, da das Problem durch Hinzufügen eines Alias ​​zu ~/.ssh/config (und Verwenden dieses Alias ​​in meinen Git-Remote-URLs) behoben wurde.

Mit anderen Worten, versuchen Sie, Folgendes in Ihr C einzufügen:/Users/{Benutzername} /. Ssh/config

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

und wo Sie eine Fernbedienung des Formulars haben

Origin  [email protected]:repo-name.git

entfernen Sie es und fügen Sie es mithilfe des Formulars erneut hinzu

Origin  [email protected]:repo-name.git
1
SensorSmith

Wenn Sie Umgebungsvariablen zum Übergeben des Schlüssels verwenden, sollten Sie diese mit base64 codieren. Andernfalls schlagen sie wahrscheinlich mit einem Fehler fehl, bei dem Sie nach Ihrer Passphrase gefragt werden. Dies bedeutet, dass der Schlüssel beschädigt ist. Wenn du siehst:

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

Dann codiert base64 die Variable SSH_PRIVATE_KEY. Wenn Sie unter OS X arbeiten,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

verschlüsselt es und kopiert es in Ihre Zwischenablage. Ändern Sie nun die Skriptzeile .gitlab-ci.yml in

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

Mein Problem war, dass die von puttygen erstellte und gespeicherte private Schlüsseldatei id_rsa ein anderes Format hat als die von einem Ubuntu-Computer erstellte. Nachdem ich ein Paar Schlüssel vom Ubuntu-Computer erstellt habe, kopieren Sie diese Dateien zurück auf den Windows-Computer im Ordner% UserProfile% .ssh und fügen Sie den neu generierten öffentlichen Schlüssel zu Gitlab hinzu. Keine Erlaubnis mehr für mich verweigert

0
Quang Le

Das Ausführen von eval $(ssh-agent) hat mein Problem behoben.

0
michalzuber