Fehler: „Permission denied (publickey)“ (Berechtigung verweigert: öffentlicher Schlüssel)
Die Fehlermeldung „Permission denied“ (Berechtigung verweigert) bedeutet, dass der Server Ihre Verbindung abgelehnt hat. Dafür kann es verschiedene Gründe geben. Die häufigsten werden nachfolgend erläutert.
Kann ich den Befehl sudo
bei Git verwenden?
Sie sollten den Befehl sudo
nicht bei Git verwenden. Wenn Sie sudo
aus einem sehr guten Grund verwenden müssen, stellen Sie sicher, dass Sie ihn bei jedem Befehl verwenden. (Wahrscheinlich ist es besser, su
zu verwenden, um an dieser Stelle eine Shell als Root zu bekommen.) Wenn Sie SSH-Schlüssel ohne sudo
erzeugen und dann versuchen, einen Befehl wie sudo git push
auszuführen, verwenden Sie andere Schlüssel als die von Ihnen erzeugten.
Überprüfen, ob Sie eine Verbindung mit dem richtigen Server herstellen
Tippen ist fehleranfällig, das wissen wir alle. Achten Sie darauf, was Sie tippen. Sie können keine Verbindung mit „githib.com“ oder „guthub.com“ herstellen. In einigen Fällen kann ein Unternehmensnetzwerk auch Probleme bei der Auflösung des DNS-Eintrags verursachen.
Um sicherzustellen, dass Sie die Verbindung mit der richtigen Domain herstellen, können Sie den folgenden Befehl eingeben:
$ ssh -vT git@Hostname> OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
> debug1: Reading configuration data /Users/you/.ssh/config
> debug1: Reading configuration data /etc/ssh_config
> debug1: Applying options for *
> debug1: Connecting to Hostname [IP ADDRESS] port 22.
Die Verbindung sollte über Port 22 hergestellt werden.
Immer den „git“-Benutzer verwenden
Alle Verbindungen, auch die zu Remote-URLs, müssen als „git“-Benutzer hergestellt werden. Wenn Sie versuchen, die Verbindung unter Ihrem GitHub Enterprise-Benutzernamen herzustellen, tritt ein Fehler auf:
$ ssh -T GITHUB-USERNAME@Hostname> Permission denied (publickey).
Wenn Ihre Verbindung fehlgeschlagen ist und Sie eine Remote-URL mit Ihrem GitHub Enterprise-Benutzernamen verwenden, können Sie die Remote-URL für die Verwendung des „git“-Benutzers ändern.
Sie sollten Ihre Verbindung mit der folgenden Eingabe überprüfen:
$ ssh -T git@Hostname> Hi username! You've successfully authenticated...
Sicherstellen, dass Sie einen Schlüssel haben, der verwendet wird
-
Open TerminalTerminalGit Bashthe terminal.
-
Überprüfen Sie, dass Sie einen privaten Schlüssel erzeugt und in SSH geladen haben. Bei Verwendung von OpenSSH 6.7 oder älter:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
If you have GitHub Desktop installed, you can use it to clone repositories and not deal with SSH keys. It also comes with the Git Bash tool, which is the preferred way of running git
commands on Windows.
-
If you are using Git Bash, turn on ssh-agent:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566
If you are using another terminal prompt, such as Git for Windows, turn on ssh-agent:
# start the ssh-agent in the background $ eval $(ssh-agent -s) > Agent pid 59566
-
Überprüfen Sie, dass Sie einen privaten Schlüssel erzeugt und in SSH geladen haben. Bei Verwendung von OpenSSH 6.7 oder älter:
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
-
Open TerminalTerminalGit Bashthe terminal.
-
Überprüfen Sie, dass Sie einen privaten Schlüssel erzeugt und in SSH geladen haben. Bei Verwendung von OpenSSH 6.7 oder älter:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
-
Open TerminalTerminalGit Bashthe terminal.
-
Überprüfen Sie, dass Sie einen privaten Schlüssel erzeugt und in SSH geladen haben. Bei Verwendung von OpenSSH 6.7 oder älter:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
Der Befehl ssh-add
sollte eine lange Zeichenfolge an Ziffern und Buchstaben ausgeben. Wenn der Befehl nichts ausgibt, müssen Sie einen neuen SSH-Schlüssel erzeugen und ihn mit GitHub Enterprise verknüpfen.
Tipp: Bei den meisten Systemen werden die standardmäßigen privaten Schlüssel (~/.ssh/id_rsa
, ~/.ssh/id_dsa
und ~/.ssh/identity
) automatisch zum SSH-Authentifizierungsagenten hinzugefügt. Normalerweise müssen Sie den Befehl ssh-add path/to/key
nicht ausführen, es sei denn, Sie überschreiben den Dateinamen, wenn Sie einen Schlüssel erzeugen.
Weitere Informationen abrufen
Um zu prüfen, ob der Schlüssel verwendet wird, können Sie auch versuchen, eine Verbindung zu git@[hostname]
herzustellen:
$ ssh -vT git@Hostname> ...
> debug1: identity file /Users/you/.ssh/id_rsa type -1
> debug1: identity file /Users/you/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/you/.ssh/id_dsa type -1
> debug1: identity file /Users/you/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/you/.ssh/id_rsa
> debug1: Trying private key: /Users/you/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).
In diesem Beispiel hatten wir keine Schlüssel, die SSH verwenden konnte. Die „-1“ am Ende der „identitiy file“-Zeilen bedeutet, dass SSH keine entsprechende Datei finden konnte. Weiter unten weisen auch die „Trying private key“-Zeilen darauf hin, dass keine Datei gefunden wurde. Wenn eine Datei vorhanden wäre, würde dort „1“ bzw. „Offering public key“ stehen:
$ ssh -vT git@Hostname> ...
> debug1: identity file /Users/you/.ssh/id_rsa type 1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Offering RSA public key: /Users/you/.ssh/id_rsa
Überprüfen, ob der öffentliche Schlüssel an Ihr Konto angehängt ist
Sie müssen Ihren öffentlichen Schlüssel für GitHub Enterprise bereitstellen, um eine sichere Verbindung herzustellen.
-
Öffnen Sie Terminal.
-
Starten Sie den SSH-Agenten im Hintergrund.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
Suchen und notieren Sie Ihren öffentlichen Schlüssel-Fingerprint. Bei Verwendung von OpenSSH 6.7 oder älter:
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Vergleichen Sie die Liste der SSH-Schlüssel mit der Ausgabe des Befehls
ssh-add
.
-
Öffnen Sie die Befehlszeile.
-
Starten Sie den SSH-Agenten im Hintergrund.
$ ssh-agent -s > Agent pid 59566
-
Suchen und notieren Sie Ihren öffentlichen Schlüssel-Fingerprint. Bei Verwendung von OpenSSH 6.7 oder älter:
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Vergleichen Sie die Liste der SSH-Schlüssel mit der Ausgabe des Befehls
ssh-add
.
-
Öffnen Sie Terminal.
-
Starten Sie den SSH-Agenten im Hintergrund.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
Suchen und notieren Sie Ihren öffentlichen Schlüssel-Fingerprint. Bei Verwendung von OpenSSH 6.7 oder älter:
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Vergleichen Sie die Liste der SSH-Schlüssel mit der Ausgabe des Befehls
ssh-add
.
-
Öffnen Sie das Terminal.
-
Starten Sie den SSH-Agenten im Hintergrund.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
Suchen und notieren Sie Ihren öffentlichen Schlüssel-Fingerprint. Bei Verwendung von OpenSSH 6.7 oder älter:
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
Bei Verwendung von OpenSSH 6.8 oder neuer:
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Vergleichen Sie die Liste der SSH-Schlüssel mit der Ausgabe des Befehls
ssh-add
.
Wenn Sie Ihren öffentlichen Schlüssel in GitHub Enterprise nicht sehen, müssen Sie Ihren SSH-Schlüssel zu GitHub Enterprise hinzufügen, um ihn mit Ihrem Computer zu verknüpfen.
Warnung: Wenn Sie einen SSH-Schlüssel sehen, der Ihnen auf GitHub Enterprise unbekannt ist, sollten Sie ihn sofort löschen und sich für weitere Anweisungen an den Ihr GitHub Enterprise-Websiteadministrator wenden. Ein Ihnen unbekannter öffentlicher Schlüssel kann ein Hinweis auf ein Sicherheitsproblem sein. Weitere Informationen finden Sie unter „SSH-Schlüssel überprüfen“.