Mein Problem ist, dass ich nicht von GitLab pushen oder abrufen kann. Ich kann jedoch klonen (über HTTP oder über SSH). Ich erhalte diese Fehlermeldung, wenn ich versuche zu pushen:
Berechtigung verweigert (publickey) schwerwiegend: Konnte nicht aus dem Remote-Repository lesen
Von all den Themen, die ich mir angesehen habe, habe ich Folgendes getan:
- Richten Sie einen SSH-Schlüssel auf meinem Computer ein und fügen Sie den öffentlichen Schlüssel zu GitLab hinzu
- Fertig die Konfiguration --global für Benutzername und E-Mail
- Über SSH und HTTP geklont, um zu überprüfen, ob das Problem dadurch behoben werden kann
- Erledigt den Befehl ssh -T [email protected]
Wenn Sie einen Einblick in die Lösung meines Problems haben, wäre dies sehr dankbar.
ssh -vvvv [email protected]
zu sehen, ob es den SSH-Schlüssel abholtsudo git clone [email protected]:project/somethiing.git
werden. Andernfalls wird ssh/root/.ssh
anstelle des von Ihnen hochgeladenen Schlüssels~/.ssh/id_rsa
Antworten:
Ich habe das gefunden, nachdem ich viel gesucht habe. Es wird perfekt für mich funktionieren.
ssh-keygen
.ssh
Ordner.id_rsa.pub
. Öffnen Sie es auf dem Notizblock. Kopieren Sie den gesamten Text daraus.Probieren Sie es jetzt aus und es wird sicher funktionieren.
quelle
type %userprofile%\.ssh\id_rsa.pub | clip
ssh-add filename
Stellen Sie sicher, dass Sie dies tun: (mit-Pfad, wenn nicht im rsa-Verzeichnis), nachdem Sie die obigen Schritte ausgeführt habenSchritt 1: Es wurde eine Konfigurationsdatei in die
~/.ssh/config
Datei eingefügt, die aussiehtSchritt 2: Klonen Sie einfach das Git Repo OHNE Sudo.
Dokumentation: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths
quelle
id_rsa_gitlab
in Fedos Beispiel, müssen Sie eine Konfigurationsdatei angeben. Gitlabs netter Artikel über die Angelegenheit: gitlab.com/help/ssh/…Hostname
,Host
damit dies funktioniertIch denke, die einfache Lösung besteht darin, dem Authentifizierungsagenten einen privaten Schlüssel hinzuzufügen (falls Ihr Schlüssel nicht vorhanden ist
~/.ssh/id_rsa
).Sie lassen sich im Grunde
ssh-agent
darum kümmern.Zusätzlich können Sie es dauerhaft hinzufügen .
quelle
.pub
Erweiterung.In meinem Fall hat es in der WSL (Windows Subsystem for Linux) nicht funktioniert.
Wenn ich die WSL starte, muss ich
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Jetzt funktioniert die Verbindung.
Wir können dies mit testen
ssh -T [email protected]
Anmerkungen:
quelle
Stellen Sie sicher, dass Sie nicht ausgeführt
sudo git clone [email protected]:project/somethiing.git
werden. Andernfalls wird ssh/root/.ssh
anstelle des von Ihnen hochgeladenen Schlüssels angezeigt~/.ssh/id_rsa
quelle
Hierfür gibt es eine sehr einfache Lösung: Anstatt mit ssh zu arbeiten, wechseln Sie zu https. Dazu: In Ihrem Projektordner befindet sich ein .git-Ordner - Sie haben eine Konfigurationsdatei - öffnen Sie diese in einem Texteditor und ändern Sie die Zeile
zu
quelle
Wenn Sie unter Linux oder Macox arbeiten, versuchen Sie dies einfach im Terminal:
Wenn es nichts zurückgibt, versuchen Sie Folgendes:
Es muss eine Identität in ~ / .ssh / id_rsa erstellen
nach erneutem Versuch:
Es muss Ihre Identität zurückgeben. Nach dem erneuten Klonen muss es funktionieren
NB: Vergessen Sie nicht, Ihren SSH-Schlüssel in Ihr Profil-Gitlab einzufügen
Vielen Dank
quelle
In meinem Fall war es kein Gitlab-Problem, sondern ein SSHD-Konfigurationsproblem. Der SSH-Server hat bis auf eine Liste von Benutzern keine Verbindung zugelassen. Der Benutzer git, der eine Remoteverbindung mit gitlab herstellt, war nicht in dieser Liste enthalten. Überprüfen Sie dies also vor allem anderen.
Sie können Ihre SSH-Serverkonfiguration in überprüfen
/etc/ssh/sshd_config
. Wenn Sie eine Zeile mit der Option habenAllowUsers
, fügen Sie git hinzu:quelle
Ich habe Gitlab mit Docker ausgeführt. Dies ist, was ich getan habe, um mein Problem zu beheben.
Es wurde festgestellt, dass in Docker / var / log / gitlab / sshd / current mehrere Vorkommen einer Nachricht aufgetreten sind :
Danach habe ich den Besitz dieser Datei von 99: users in git: users geändert mit:
quelle
Schritte zu tun, bekam den gleichen Fehler, aber ich habe es behoben. Gitlab möchte ssh-rsa. Im Folgenden finden Sie den Code zum Ausführen von ssh für rsa
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
[email protected] ist die E-Mail-Adresse Ihres Gitlab-Kontos
Sie werden zur Eingabe aufgefordert. Drücken Sie einfach die Eingabetaste, nachdem der folgende Code zur Eingabe aufgefordert wurde.
Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/yourDesktopName/.ssh/id_rsa):
Sie werden erneut zur Eingabe aufgefordert. Drücken Sie einfach die Eingabetaste, nachdem der folgende Code zur Eingabe aufgefordert wurde.
Passphrase eingeben (leer für keine Passphrase):
Sie werden erneut aufgefordert, das letzte Mal einzugeben. Drücken Sie einfach die Eingabetaste, nachdem der folgende Code aufgefordert wurde.
Geben Sie dieselbe Passphrase erneut ein:
Sie zeigen Ihre ssh-rsa generieren.
Melden Sie sich bei Ihrem Gitlab-Konto an und gehen Sie zur rechten Navigationsleiste, die Sie erhalten. In der linken Seitenleiste erhalten Sie den SSH-Schlüssel. Treten Sie ein.
Schauen Sie über die Eingabeaufforderung, die Sie zur Eingabe auffordert, und Sie erhalten den Pfad von ssh-rsa.
Gehen Sie zu Ihrem SSH-Ordner und rufen Sie die Datei id_rsa.pub auf
Öffnen Sie es und holen Sie sich den Schlüssel und kopieren Sie das Einfügen in das Gitlab. Sie sind fast fertig.
Überprüfen Sie durch:
ssh -T [email protected]
Sie erhalten:
Welcome to GitLab, @joy4!
Getan.
quelle
Früher war es sehr schwierig für mich, aber als ich es versuchte, wurde es so einfach, SSH-Schlüssel in Mac und Linux hinzuzufügen. Es gibt einige Schritte und Befehle, um dies wie folgt zu tun:
Führen Sie den Befehl
ssh-keygen
in diesem Terminal aus und geben Sie ihn ein, bis dort das Randomart-Bild des Schlüssels angezeigt wird.Geben Sie dann einen weiteren Befehl in dieses Terminal ein:
Es wird Ihren SSH-Schlüssel generieren. Der Schlüssel beginnt mit
ssh-rsa
und endet mit.local
.ssh key
Abschnitt und fügen Sie ihn dort ein. Klicken Sie auf dieAdd
Schaltfläche, dies wird funktionieren.quelle
Ich hatte das gleiche Problem und habe es durch Hinzufügen eines neuen SSH-Schlüssels behoben:
ssh-keygen -t ed25519 -C "[email protected]"
xclip -sel clip < ~/.ssh/id_ed25519.pub
in meinem Fall unter Linux).settings=>ssh
Schlüsseln und übergeben Sie den neuen Schlüsselquelle
Geben Sie den Pfad ein, den Sie speichern möchten (Beispiel: my-pc / Desktop / .ssh / ed25519).
Fügen Sie den öffentlichen Schlüssel zu Ihrem Gitlab hinzu ( So fügen Sie dem Gitlab den SSH- Schlüssel hinzu )
quelle
Hauptsächlich zwei Dinge
Sie müssen die Schlüssel id_rsa.pub und id_rsa (privat) in Ihrem .ssh-Ordner haben (der sich in Ihrem Home-Ordner befinden sollte. Erstellen Sie ihn, wenn er nicht vorhanden ist, und legen Sie Ihre Schlüssel ab). Es würde nicht funktionieren, wenn Sie Ihre Schlüsseldateien anders benannt haben
Ändern Sie die Berechtigung der id_rsa in chmod 400 ~ / .ssh / id_rsa
quelle
Ein weiteres Problem, das dieses Verhalten verursachen kann, ist, wenn Sie ein Setup mit 2 möglichen% HOME% -Lokalisierungen haben.
Ich verwende einen PC, auf dem einige meiner Dokumente lokal und einige auf einem Netzwerklaufwerk gespeichert sind. Einige Anwendungen denken , dass
C:\Users\<MyUserName>\
es meine ist%home%
, andere denken, dass diesU:\
die Heimat ist.Es stellte sich heraus, dass
ssh-keygen
ich meinen privaten Schlüssel unterC:\users\<MyUserName>\
und das steckessh -T
undssh -v
auch dort nachschaue.Abgesehen davon scheint alles gut zu funktionieren
git clone
,git push
und andere suchen nach einem SchlüsselU:\
. Was fehlschlägt, so bekomme ich den oben genannten Fehler.Ich habe eine Stunde gebraucht, um das herauszufinden, aber am Ende war die Lösung einfach: Ich habe alles von
C:\Users\<MyUserName>\.ssh
bis kopiertU:\.ssh
quelle
Ich habe so gelöst ..
Mit diesem Befehl wurde ein Schlüssel für Windows generiert:
Das Problem war jedoch, dass nach dem Ausführen dieses Befehls eine Zeile angezeigt wurde: "Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/c/Users/xxx/.ssh/id_rsa):" Hier habe ich nur den Dateinamen angegeben, weshalb Mein Schlüssel wurde in meinem PWD und nicht an dem angegebenen Ort gespeichert. Als ich "git clone" gemacht habe, wurde angenommen, dass sich der Schlüssel an der Position "/c/Users/xxx/.ssh/id_rsa" befindet, aber er wurde nicht gefunden, daher wurde ein Fehler ausgelöst.
Zum Zeitpunkt der Schlüsselgenerierung wurden 2 Dateien generiert, z. B. "file1" & "file1.pub". Ich habe beide Dateien umbenannt in
und
und platzierte beide an der Stelle
"/c/Users/xxx/.ssh/"
quelle
Gehen Sie zum Terminal und generieren Sie den SSH-Schlüssel erneut. Typ
ssh-keygen
. Sie werden gefragt, wo Sie es speichern möchten. Geben Sie den Pfad ein.Kopieren Sie dann den öffentlichen Schlüssel auf die gitlabs-Plattform. Es beginnt normalerweise mit ssh-rsa.
quelle
Das Problem für mich war, dass ich in der SSH-Konfigurationsdatei unter
UsePAM
vonyes
zu gewechselt habe . Mit allem funktioniert perfekt.no
/etc/ssh/sshd_config
UsePAM yes
quelle
Ich fand die Lösung in der Gitlab-Hilfe .
Ich hoffe es kann einigen von euch helfen!
quelle
Wie füge ich einen SSH-Schlüssel zum Gitlab-Konto in Ubuntu hinzu?
Der SSH-Schlüssel wird angezeigt. Kopieren Sie diese und
Gehen Sie zu Ihrem Gitlab-Konto.
SSH-Key wird hinzugefügt!
(Hinweis, wenn Sie den SSH-Schlüssel "Vorschau generieren" und die Berechtigung "Abrufen" verweigert haben (öffentlicher Schlüssel). Sie löschen Ihren SSH-Schlüssel "Vorschau" und generieren einen neuen und fügen git user.name und email auf Ihrem Terminal hinzu.)
quelle
Ich habe das
[email protected]: Permission denied (publickey)
Problem mithilfe der folgenden Anweisungen gelöstcat ~/.ssh/id_rsa.pub
id_rsa.pub
(öffentlicher Schlüssel) in Ihr getlab `Setting -> SSH Keyscat ~/.ssh/id_rsa
id_rsa
(privater Schlüssel) nach `Code_repo-> git_auth-> id_rsaANMERKUNG: Kümmern Sie sich um den Computerbenutzer, wenn Sie den
root
Benutzer in Ihrer DockerFile oder an einem anderen Ort verwenden,sudo su
bevor Sie die obigen Befehle ausführen, um öffentliche und private Schlüssel des Root-Benutzers abzurufen .quelle
In unserem Fall war dies kein Problem auf der Benutzer- / Clientseite, sondern auf der Gitlab-Serverseite.
Wir führen eine lokale Gitlab CE 12.9-Instanz unter CentOS 7.1 aus.
Wir haben festgestellt, dass auf dem Server die Datei .ssh / authorized_keys nicht ordnungsgemäß aktualisiert wurde. Benutzer erstellen ihre SSH-Schlüssel (gemäß dem Gitlab-Handbuch) und fügen sie dem Gitlab-Server hinzu. Der Server aktualisiert jedoch nicht die autorisierten Schlüssel , sodass immer Fehler mit Berechtigungsverweigerung auftreten.
Eine Problemumgehung bestand darin , die Datei "authorized_keys" neu auszuführen, indem Folgendes ausgeführt wurde:
Das würde für jeden funktionieren, der seine Schlüssel hinzugefügt hat, bevor er die Rechenaufgabe ausgeführt hat. Für die nächsten Benutzer, die ihre Schlüssel hinzufügen würden, muss jemand die Rechenaufgaben erneut manuell ausführen.
Eine dauerhaftere Lösung bestand darin , die Datei authorized_keys nicht zu verwenden und stattdessen eine indizierte Suche in der Gitlab-Datenbank zu verwenden :
Standardmäßig (auch die Standardeinstellung in unserer Installation) wurde die Datei In autorisierte Schlüssel schreiben in den Einstellungen Admin-Bereich> Leistungsoptimierung aktiviert . Also haben wir das deaktiviert und stattdessen die Gitlab-Datenbank verwendet.
Nach dem Einrichten der indizierten Suche und dem Deaktivieren der Datei In autorisierte Schlüssel schreiben wurde der SSH-Zugriff OK.
quelle
Für alle, die Windows 10 verwenden und nichts anderes für sie arbeiten:
In meinem Fall musste ich das Repo mit https anstelle von ssh klonen und ein Fenster öffnete sich und fragte nach meinen Anmeldeinformationen. Danach funktioniert alles gut.
quelle
Ich weiß, ich antworte sehr spät und sogar StackOverflow hat bestätigt, ob ich wirklich antworten möchte. Ich antworte, weil niemand das eigentliche Problem beschrieben hat und es deshalb teilen wollte.
Die Grundlagen
Verstehe zuerst, was hier die Fernbedienung ist. Remote ist GitLab und Ihr System ist lokal. Wenn wir also über Remote sprechen
origin
, ist die in Ihrergit remote -v
Ausgabe festgelegte URL Ihre Remote-URL.Die Protokolle
Grundsätzlich funktioniert Git Clone / Push / Pull hauptsächlich mit zwei verschiedenen Protokollen (es gibt auch andere) -
Wenn Sie ein Repo klonen (oder die Remote-URL ändern) und die HTTP-URL wie https://gitlab.com/wizpanda/backend-app.git verwenden, wird das erste Protokoll verwendet, dh das HTTP-Protokoll.
Wenn Sie das Repo klonen (oder die Remote-URL ändern) und die URL wie
[email protected]:wizpanda/backend-app.git
folgt verwenden, wird das SSH-Protokoll verwendet.HTTP-Protokoll
In diesem Protokoll verwendet jede Remote-Operation, dh Klonen, Drücken und Ziehen, die einfache Authentifizierung, dh Benutzername und Passwort Ihrer Remote (in diesem Fall GitLab). Dies bedeutet, dass Sie für jede Operation Ihren Benutzernamen und Ihr Passwort eingeben müssen, was möglicherweise umständlich ist .
Wenn Sie also pushen / ziehen / klonen, authentifiziert GitLab / GitHub Sie mit Ihrem Benutzernamen und Passwort und ermöglicht Ihnen den Vorgang.
Wenn Sie dies versuchen möchten, können Sie durch Ausführen des Befehls zur HTTP-URL wechseln
git remote set-url origin <http-git-url>
.Um diesen Fall zu vermeiden, können Sie das SSH-Protokoll verwenden.
SSH-Protokoll
Eine einfache SSH-Verbindung funktioniert mit öffentlich-privaten Schlüsselpaaren. In Ihrem Fall kann GitLab Sie also nicht authentifizieren, da Sie für die Kommunikation eine SSH-URL verwenden. Jetzt muss GitLab Sie irgendwie kennen. Dazu müssen Sie ein öffentlich-privates Schlüsselpaar erstellen und GitLab den öffentlichen Schlüssel geben.
Wenn Sie jetzt mit GitLab pushen / ziehen / klonen, bietet GIT (intern SSH) standardmäßig Ihren privaten Schlüssel für GitLab an und bestätigt Ihre Identität. Mit GitLab können Sie den Vorgang ausführen.
Also werde ich die Schritte, die Muhammad bereits gegeben hat, nicht wiederholen, sondern sie theoretisch wiederholen.
~/.ssh
Namenid_rsa.pub
(öffentlicher Schlüssel) undid_rsa
(privater Schlüssel) angegeben.Tipps
Sie sollten immer einen starken rsa-Schlüssel mit mindestens 2048 Bytes erstellen. So kann der Befehl sein
ssh-keygen -t rsa -b 2048
.https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Allgemeiner Gedanke
Beide Ansätze haben ihre Vor- und Nachteile. Nachdem ich den obigen Text eingegeben hatte, suchte ich mehr darüber, weil ich nie etwas darüber gelesen hatte.
Ich habe dieses offizielle Dokument https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols gefunden, das mehr darüber erzählt. Mein Punkt hier ist, dass Sie durch Lesen des Fehlers und Nachdenken über den Fehler Ihre eigene Theorie oder Ihr eigenes Verständnis erstellen und dann mit einigen Google-Ergebnissen übereinstimmen können, um das Problem zu beheben :)
quelle
Ich habe meine
~/.ssh/id_rsa.pub
zur Liste der bekannten SSH-Schlüssel in meinen GitLab-Einstellungen https://gitlab.com/profile/keys hinzugefügt . Das hat das Problem für mich gelöst. :-)quelle
Ich verwende Ubuntu 18.04 und es war tatsächlich ein Berechtigungsproblem auf meinem lokalen Computer. Das Problem wurde behoben, als ich die Lese- / Schreibberechtigung für meinen .git-Ordner festlegte.
quelle
Nun, ich hatte das gleiche Problem und nachdem ich die Antwort versucht hatte, schlug @Khan vor. Ich konnte es jedoch nur zum Laufen bringen, indem ich einfach die Ursprungs-URL in der .git / config-Datei in die https-Adresse änderte: https://gitlab.com/mygitlabusername/mygitproject.git
Da der Zugriff über ssh verweigert wird, habe ich herausgefunden, dass die Verwendung von https kein Problem sein sollte. Bei jedem Push an das at-Repository werden Sie jedoch nach Ihrem Benutzernamen und Passwort gefragt
quelle
Bitte verwenden Sie,
git config credential.helper store
wenn Ihre Site TLS / SSL verwendet. Hoffe das funktioniertquelle
Es scheint Unterschiede zwischen den beiden Möglichkeiten zu geben, auf ein Git-Repository zuzugreifen, dh entweder mit SSH oder HTTPS. Bei mir ist der Fehler aufgetreten, weil ich versucht habe, mein lokales Repository mit SSH zu pushen.
Das Problem kann einfach gelöst werden, indem Sie auf der Zielseite Ihres Projekts auf die Schaltfläche "Klonen" klicken, den HTTPS-Link kopieren und durch den SSH-Link ersetzen, der im Format "git @ gitlab ..." angezeigt wird.
quelle
Berechtigung ändern :: chmod 400 ~ / .ssh / id_rsa Es hat mir geholfen.
quelle