Mein Problem ist, dass ich weder GitLab noch Push oder Hol abrufen kann. Ich kann jedoch klonen (via HTTP oder via SSH). Ich erhalte diese Fehlermeldung, wenn ich versuche zu schieben:
Berechtigung verweigert (publickey) fatal: Das Remote-Repository konnte nicht gelesen werden
Von all den Threads, die ich angeschaut habe, habe ich Folgendes getan:
Im Moment möchte ich meinen Computer schlagen. Wenn Sie wissen, wie Sie mein Problem lösen können, wäre ich Ihnen sehr dankbar.
Ich habe das gefunden, nachdem ich viel gesucht hatte. Es wird perfekt für mich funktionieren.
ssh-keygen
.ssh
.id_rsa.pub
. Öffnen Sie es auf dem Merkzettel. Kopieren Sie den gesamten Text davon.Jetzt probieren Sie es aus und es wird sicher funktionieren.
Schritt 1: Eine Konfigurationsdatei im Ordner ~/.ssh/wurde hinzugefügt
User git
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
TCPKeepAlive yes
IdentitiesOnly yes
Schritt 2: Klonen Sie einfach das Git Repo OHNE Sudo.
stellen Sie sicher, dass Sie Sudo git clone [email protected]:project/somethiing.git
nicht ausführen. Andernfalls wird ssh in /root/.ssh
statt mit dem hochgeladenen Schlüssel ~/.ssh/id_rsa
aussehen.
Ich denke, die einfache Lösung besteht darin, dem Authentifizierungsagenten einen privaten Schlüssel hinzuzufügen (wenn Ihr Schlüssel nicht ~/.ssh/id_rsa
ist).
ssh-add ~/.ssh/<your private key>
Sie lassen im Grunde den ssh-agent
sich darum kümmern.
Zusätzlich können Sie dauerhaft hinzufügen .
In meinem Fall war es kein Gitlab-Problem, sondern eine sshd-Konfiguration. Der SSH-Server erlaubte keine Verbindung außer einer Liste von Benutzern. Der Benutzer git, der sich aus der Ferne mit gitlab verbindet, war nicht in dieser Liste. Überprüfen Sie dies also vor allem anderen.
Sie können Ihre SSH-Serverkonfiguration in /etc/ssh/sshd_config
überprüfen. Wenn Sie eine Zeile mit der Option AllowUsers
haben, fügen Sie git hinzu:
AllowUsers user1 user2 user3 git
Ich habe Gitlab mit Docker laufen lassen. Dies ist, was ich getan habe, um mein Problem zu beheben.
In Docker/var/log/gitlab/sshd/current gefunden gab es mehrere Vorkommen einer Nachricht:
Authentifizierung abgelehnt: falscher Besitz oder Modi für die Datei /var/opt/gitlab/.ssh/authorized_keys
Danach wechselte ich den Besitz dieser Datei von 99: Benutzer zu git: Benutzer mit:
chown git: Benutzer Authorized_keys
wenn Sie sich in Linux oder Macox befinden, versuchen Sie es einfach in terminal:
ssh-add -l
wenn nichts zurückgegeben wird, versuchen Sie Folgendes:
ssh-add
es muss Identität in ~/.ssh/id_rsa erstellt werden
nach Wiederholung:
ssh-add -l
es muss Ihre Identität zurückgeben. Nach einem erneuten Klonversuch muss es funktionieren
Hinweis: Vergessen Sie nicht, Ihren SSH-Schlüssel in Ihrem Profilgitlab hinzuzufügen
vielen Dank
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
Nun funktioniert die Verbindung.
Wir können das mit ssh -T [email protected]
testen
ausführliche Erklärung: Git via SSH von Windows gibt Permission Denied zurück
Wenn Sie mehrere Git-Konto haben und unterschiedliche SSH-Schlüssel möchten
Sie müssen den gleichen Schritt ausführen, um den SSH-Schlüssel zu generieren
ssh-keygen -t ed25519 -C "[email protected]"
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 den SSH-Schlüssel zu Gitlab hinzu )
Sie müssen die SSH-Identität mit dem folgenden Befehl neu definieren
ssh-add ~/my-pc/Desktop/.ssh/ed25519
Schritte zu tun, bekam den gleichen Fehler, aber ich habe es behoben ... Gitlab will ssh-rsa so unten ist der Code, um ssh für rsa auszuführen
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
[email protected] ist die E-Mail-Adresse Ihres Gitlab-Kontos
Sie werden aufgefordert, die Eingabe zu bestätigen. Drücken Sie einfach die Eingabetaste, nachdem der folgende Code Eingabeaufforderung lautet.
Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/yourDesktopName/.ssh/id_rsa):
Sie werden erneut zur Eingabe der Eingabeaufforderung aufgefordert. Drücken Sie einfach die Eingabetaste, nachdem der folgende Code Eingabeaufforderung lautet.
Passphrase eingeben (leer für keine Passphrase):
Es erscheint erneut die Aufforderung, das letzte Mal einzugeben, drücken Sie die Eingabetaste.
Geben Sie dieselbe Passphrase erneut ein:
Sie werden Ihre ssh-rsa-Generierung anzeigen.
Melden Sie sich bei Ihrem Gitlab-Konto an und gehen Sie zur rechten Navigationsleiste, um die Einstellungen zu übernehmen. In der linken Seitenleiste erhalten Sie den SSH-Schlüssel. Geben Sie es 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 id_rsa.pub auf
Öffnen Sie es und holen Sie sich den Schlüssel und Copy Paste in das Gitlab und Sie sind fast fertig.
Überprüfen Sie durch: ssh -T [email protected]
Sie erhalten: Welcome to GitLab, @joy4!
Erledigt.
Gehen Sie zum Terminal und regenerieren Sie den SSH-Schlüssel erneut. Geben Sie ssh-keygen
ein. Sie werden gefragt, wo Sie sie 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.
Wie füge ich einen SSH-Schlüssel zum Gitlab-Konto in Ubuntu hinzu?
Der SSH-Schlüssel wird angezeigt. Kopieren Sie diese und
Gehe zu deinem gitlab Account.
SSH-Key wird hinzugefügt!
(NB, wenn Sie Previews-SSH-Schlüssel generieren und die Berechtigung "Erhalten" verweigert haben (öffentlicher Schlüssel). Sie löschen Ihren Previews-SSH-Schlüssel und generieren einen neuen und fügen Git-Benutzername und E-Mail auf Ihrem Terminal hinzu.)
Ein weiteres Problem, das dieses Verhalten verursachen kann, liegt vor, wenn Sie über ein Setup mit 2 möglichen% HOME% -Standorten verfügen.
Ich verwende einen PC, auf dem einige meiner Dokumente lokal und einige auf einem Netzlaufwerk gespeichert sind. Einige Anwendungen denken, dass C:\Users\<MyUserName>\
mein %home%
ist, andere denken, dass U:\
das Zuhause ist.
Es stellte sich heraus, dass ssh-keygen
meinen privaten Schlüssel unter C:\users\<MyUserName>\
gestellt hat und dass ssh -T
und ssh -v
auch dort nachsehen.
Also scheint alles gut zu funktionieren, außer dass git clone
, git Push
und andere nach einem Schlüssel in U:\
suchen. Was fehlschlägt, so bekomme ich den og Fehler.
Ich brauchte eine Stunde, um das herauszufinden, aber am Ende war die Lösung einfach: Ich habe alles von C:\Users\<MyUserName>\.ssh
bis U:\.ssh
kopiert.
Ich fand die Lösung in Gitlab-Hilfe .
To create a new SSH key pair:
1. Open a terminal on Linux or macOS, or Git Bash / WSL on Windows.
2. Generate a new ED25519 SSH key pair: ssh-keygen -t ed25519 -C "[email protected]"
2.1 Or, if you want to use RSA: ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
3. Next, you will be prompted to input a file path to save your SSH key pair to... use the suggested path by pressing Enter
4. Once the path is decided, you will be prompted to input a password to secure your new SSH key pair. It's a best practice to use a password, but it's not required and you can skip creating it by pressing Enter twice.
5. Copy your public SSH key to the clipboard by using one of the commands below depending on your Operating System:
macOS: pbcopy < ~/.ssh/id_ed25519.pub
WSL / GNU/Linux (requires the xclip package): xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash on Windows: cat ~/.ssh/id_ed25519.pub | clip
6. Navigating to SSH Keys and pasting your public key in the Key field
7. Click the Add key button
Ich hoffe es kann einigen von euch helfen!
Ich hatte das gleiche Problem, ich löste es durch Hinzufügen eines neuen SSH-Schlüssels:
ssh-keygen -t ed25519 -C "[email protected]"
xclip -sel clip < ~/.ssh/id_ed25519.pub
in meinem Fall unter Linux)settings=>ssh
-Schlüsseln und hinter dem neuen SchlüsselFrüher war es sehr schwierig für mich, aber als ich es versuchte, wurde es so einfach, den SSH-Schlüssel unter Mac und Linux hinzuzufügen. Es gibt ein paar Schritte und einen Befehl, um dies wie folgt zu tun:
cd 'project directory name'
Führen Sie den Befehl ssh-keygen
in diesem Terminal aus und geben Sie ihn ein, bis das zufällige Bild des Schlüssels dort angezeigt wird.
Dann geben Sie einen weiteren Befehl in diesem Terminal ein:
cat ~/.ssh/id_rsa.pub
Es wird Ihren SSH-Schlüssel generieren. Die Taste beginnt mit ssh-rsa
und endet mit .local
.
ssh key
und fügen Sie ihn dort ein. Klicken Sie auf die Schaltfläche Add
. Dies funktioniert.Nun, ich hatte das gleiche Problem und nach dem Versuch die Antwort @ Khan vorgeschlagen. Ich konnte es jedoch nur zum Laufen bringen, indem ich die Origin-URL in der .git/config-Datei in die https-Adresse änderte: https://gitlab.com/mygitlabusername/mygitproject.git
Da der Zugriff über ssh verweigert wird, stellte ich fest, dass die Verwendung von https kein Problem sein sollte. Sie werden jedoch bei jedem Push zum at-Repository nach Ihrem Benutzernamen und Kennwort gefragt
Ich habe das so gelöst ..
Mit diesem Befehl wurde ein Schlüssel für Windows generiert:
ssh-keygen -t rsa -C "[email protected]" -b 4096
das Problem war jedoch, dass nach dem Ausführen dieses Befehls eine Zeile geöffnet wurde: "Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/c/Users/xxx/.ssh/id_rsa):" Hier habe ich gegeben Nur Dateiname, aufgrund dessen mein Schlüssel in meinem PDA gespeichert wurde und nicht am angegebenen Ort. Als ich "git clone" verwendete, ging der Schlüssel von der Position "/c/Users/xxx/.ssh/id_rsa" aus. Er wurde jedoch nicht gefunden. Daher wurde ein Fehler ausgegeben.
Zum Zeitpunkt der Schlüsselgenerierung wurden 2 Dateien generiert, z. B. "file1" & "file1.pub". Ich habe beide Dateien umbenannt als
file1 -> id_rsa
und
file1.pub -> id_rsa.pub
und beide in der Position "/c/Users/xxx/.ssh/"
platziert
Ich habe meinen ~/.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. :-)
Ich verwende Ubuntu 18.04 und es war tatsächlich ein Berechtigungsproblem auf meinem lokalen Computer. Das Problem war behoben, als ich die Lese-/Schreibberechtigung für meinen .git-Ordner festgelegt habe.
Bitte verwenden Sie git config credential.helper store
, wenn Ihre Site TLS/SSL verwendet. Hoffe das klappt
Das Problem für mich war, dass ich UsePAM
von yes
auf no
in der SSH-Konfigurationsdatei unter /etc/ssh/sshd_config
umgestellt habe. Mit UsePAM yes
funktioniert alles einwandfrei.
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 Ausgangsordner 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 von id_rsa in chmod 400 ~/.ssh/id_rsa