So beheben Sie Git mit dem falschen SSH-Schlüssel und -Konto

0
174

Wenn Sie eine Verbindung zu einem entfernten Git-Server wie Github herstellen, muss sich Ihr Client authentifizieren mit HTTPS- oder SSH-basierten Token. Wenn Sie letzteres verwenden, können Probleme mit der Schlüsselbehandlung auftreten, einschließlich der Verwendung des falschen SSH-Schlüssels durch Git und der Anmeldung bei einem anderen Konto.

Was ist das Problem?

Wenn Sie keinen SSH-Schlüssel auf Ihrem Konto haben, erhalten Sie mit ziemlicher Sicherheit die folgende Fehlermeldung, wenn Sie versuchen, zu pushen :

Berechtigung verweigert (publickey). fatal: Aus dem Remote-Repository konnte nicht gelesen werden.

Dies ist wahrscheinlich der häufigste Git-Fehler, und die Lösung hierfür besteht darin, einen SSH-Schlüssel für Ihr Konto einzurichten.

Sie können jedoch auch auf eine sehr ähnlich aussehende Fehlermeldung stoßen, selbst nachdem ein SSH-Schlüssel ordnungsgemäß eingerichtet wurde. Wenn Sie mehrere Git-Konten verwenden, tritt möglicherweise dieser Fehler auf:

Die Berechtigung für Benutzername/Repository.git wurde einem anderen Konto verweigert. fatal: Aus dem Remote-Repository konnte nicht gelesen werden.

In diesem Fall hat Github Ihren SSH-Schlüssel akzeptiert, aber er funktioniert immer noch nicht richtig; Auch wenn Ihr lokales Git-Repository für die Verwendung der richtigen E-Mail-Adresse konfiguriert ist, werden Sie bei Eingabe des falschen Schlüssels als falscher Nutzer authentifiziert. Dies unterscheidet sich grundlegend vom ersten Fehler. Es ist nicht “Berechtigung verweigert” aber stattdessen “Berechtigung für Konto verweigert.”

Werbung

Dies kann ein Problem sein, wenn Sie über mehrere Konten verfügen und für jeden separate Schlüssel verwenden müssen. Aufgrund der Funktionsweise der SSH-Authentifizierung werden Sie dennoch “anmelden” zum Remote-Server von Git, aber als falscher Benutzer. Wenn Github überprüft, ob dieser Benutzer Zugriff auf das Repository hat, wird dies wahrscheinlich fehlschlagen, wodurch die Fehlermeldung ausgegeben wird, dass Ihr Konto nicht über die Berechtigung zur Verwendung Ihres eigenen Repositorys verfügt.

Die Lösung besteht darin, mehrere SSH-Schlüssel richtig zu verwalten , damit Ihr Git-Client nicht den falschen Schlüssel an den Server sendet. Sie können dies tun, indem Sie die Konfigurationsdateien von SSH bearbeiten.

Sicherstellen, dass Git richtig konfiguriert ist

Stellen Sie zunächst sicher, dass Ihr Repository so konfiguriert ist, dass es die richtige E-Mail-Adresse und den richtigen Benutzernamen verwendet. Sie können dies in der Git-Konfiguration überprüfen:

git config –list

Und legen Sie den Namen und die E-Mail für dieses Repository fest (oder verwenden Sie –global, um es für alle Repositorys festzulegen):

git config user.name “Name” git config user.email “email@gmail.com”

Wenn Sie keine SSH-Schlüsselprobleme haben, ist dies möglicherweise alles, was Sie benötigen.

Bearbeiten ~/.ssh/config

Wenn Sie keinen vorhandenen Schlüssel haben, den Sie bereits verwenden möchten, müssen Sie eine neue Schlüsseldatei für Ihr Konto erstellen. Wenn Sie dies tun, müssen Sie die richtige in ~/.ssh verschieben oder umbenennen, damit sie nicht mit Ihrer Standard-ID_rsa kollidiert. In diesem Fall erstellen wir einen neuen Schlüssel namens “github”:

ssh-keygen -t rsa -f ~/.ssh/github

Werbung< br>

Um mehrere SSH-Schlüssel zu verwenden, müssen Sie ~/.ssh/config bearbeiten und einen neuen Host-Block für Github einrichten, der auf die gerade erstellte Schlüsseldatei verweist. SSH verwendet dies, um den zu verwendenden SSH-Schlüssel auszuwählen.

Host Haupthostname github.com IdentityFile ~/.ssh/github IdentitiesOnly ja Host alter Hostname github.com IdentityFile ~/.ssh/id_rsa IdentitiesOnly ja

Wenn Sie nur den einen Hostblock für den neuen Schlüssel haben, müssen Sie nichts weiter tun und können sich jetzt mit Github verbinden. Wenn Sie mehrere Blöcke für verschiedene Schlüssel haben, müssen Sie die Fernbedienung Ihres Repositorys bearbeiten, damit github.com durch den Namen des Hostblocks in der SSH-Konfigurationsdatei ersetzt wird. Dadurch wird ein Schlüssel manuell ausgewählt, anstatt sich auf eine widersprüchliche Suche zu verlassen.

git remote Ursprung entfernen git remote Ursprung hinzufügen git@main:username/repository.git

Fehlerbehebung

Nachdem Sie die SSH-Hostkonfiguration eingerichtet und Ihre Fernbedienungen konfiguriert haben, sollte Git beim Drücken die richtige SSH-Taste verwenden. Wenn weiterhin Probleme auftreten, können Sie das Problem beheben, indem Sie den SSH-Befehl, den Git für eine Shell-Sitzung verwendet, mithilfe der Umgebungsvariablen GIT_SSH_COMMAND manuell festlegen.

GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Sie möchten auch überprüfen und sicherstellen, dass Git den Schlüssel von der erwarteten Stelle verwendet. Unter Windows kann dieser Speicherort stark variieren, je nachdem, über welche Software Sie Git verwenden. Bei Verwendung des GUI-Client-Fork wurde beispielsweise standardmäßig der Windows SSH-Agent verwendet, aber ich hatte einen neuen SSH-Schlüssel konfiguriert, den er stattdessen verwendete.