Hallo, Entdecker! An dieser Seite wird aktiv gearbeitet, oder sie wird noch übersetzt. Die neuesten und genauesten Informationen findest Du in unserer englischsprachigen Dokumentation.

Diese Version von GitHub Enterprise wird eingestellt am Diese Version von GitHub Enterprise wurde eingestellt am 2020-05-23. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für eine bessere Leistung, verbesserte Sicherheit und neue Features nimm ein Upgrade auf die neueste Version von GitHub Enterprise vor. Wende Dich an den GitHub Enterprise-Support, um Hilfe beim Upgrade zu erhalten.

Artikelversion: Enterprise Server 2.17

Fehler: „Permission denied (publickey)“ (Berechtigung verweigert: öffentlicher Schlüssel)

Die Fehlermeldung „Permission denied“ (Berechtigung verweigert) bedeutet, dass der Server Deine Verbindung abgelehnt hat. Dafür kann es verschiedene Gründe geben. Die häufigsten werden nachfolgend erläutert.

Inhalt dieses Artikels

Kann ich den Befehl sudo bei Git verwenden?

Du solltest den Befehl sudo nicht bei Git verwenden. Wenn Du sudo aus einem sehr guten Grund verwenden musst, stelle sicher, dass Du ihn bei jedem Befehl verwendest (wahrscheinlich ist es besser, su zu verwenden, um an dieser Stelle eine Shell als Root zu bekommen). Wenn Du SSH-Schlüssel ohne sudo erzeugst und dann versuchst, einen Befehl wie sudo git push auszuführen, verwendest Du andere Schlüssel als die von Dir erzeugten.

Überprüfen, ob Du eine Verbindung mit dem richtigen Server herstellst

Tippen ist fehleranfällig, das wissen wir alle. Achte darauf, was Du eingibst. Du kannst 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 Du die Verbindung mit der richtigen Domäne herstellst, kannst Du 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 Du versuchst, die Verbindung unter Deinem GitHub Enterprise-Benutzernamen herzustellen, tritt ein Fehler auf:

$ ssh -T GITHUB-USERNAME@Hostname
> Permission denied (publickey).

Wenn Deine Verbindung fehlgeschlagen ist und Du eine Remote-URL mit Deinem GitHub Enterprise-Benutzernamen verwendest, kannst Du die Remote-URL für die Verwendung des „git“-Benutzers ändern.

Du solltest Deine Verbindung mit der folgenden Eingabe überprüfen:

$ ssh -T git@Hostname
> Hi username! You've successfully authenticated...

Stelle sicher, dass Du einen Schlüssel hast, der verwendet wird

  1. Öffne TerminalTerminalGit Bash.

  2. Überprüfe, dass Du einen privaten Schlüssel erzeugt und in SSH geladen hast. Bei Verwendung von OpenSSH 6.7 oder älter:

    # starte den ssh-agent im Hintergrund
    $ 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:

    # starte den ssh-agent im Hintergrund
    $ 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)

Wenn Du GitHub Desktop installiert hast, kannst Du die Lösung verwenden, um Repositorys zu klonen und um nicht mit SSH-Schlüsseln zu arbeiten. Die Lösung enthält zudem das Git Bash-Tool, das die bevorzugte Art der Ausführung von git-Befehlen für Windows ist.

  1. Wenn Du Git Bash verwendest, aktiviere den SSH-Agenten:

    # starte den ssh-agenten im Hintergrund
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566

    Wenn Du eine andere Eingabeaufforderung verwendest, beispielsweise Git für Windows, aktiviere den SSH-Agenten:

    # starte den ssh-agenten im Hintergrund
    $ eval $(ssh-agent -s)
    > Agent pid 59566
  2. Überprüfe, dass Du einen privaten Schlüssel erzeugt und in SSH geladen hast. 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)
  1. Öffne TerminalTerminalGit Bash.

  2. Überprüfe, dass Du einen privaten Schlüssel erzeugt und in SSH geladen haben. Bei Verwendung von OpenSSH 6.7 oder älter:

    # starte den ssh-agent im Hintergrund
    $ 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:

    # starte den ssh-agent im Hintergrund
    $ 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, musst Du einen neuen SSH-Schlüssel erzeugen und ihn mit GitHub Enterprise verknüpfen.

Tipp: Auf den meisten Systemen werden die standardmäßigen privaten Schlüssel (~/.ssh/id_rsa, ~/.ssh/id_dsa und ~/.ssh/identity) automatisch zum SSH-Authentifizierungs-Agenten hinzugefügt. Normalerweise musst Du den Befehl ssh-add path/to/key nicht ausführen, es sei denn, Du überschreibst den Dateinamen, wenn Du einen Schlüssel erzeugst.

Weitere Informationen abrufen

Um zu prüfen, ob der Schlüssel verwendet wird, kannst Du 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“ respektive „Offering public key“ (öffentlicher Schlüssel angeboten) 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 Dein Konto angehängt ist

Du musst Deinen öffentlichen Schlüssel für GitHub Enterprise bereitstellen, um eine sichere Verbindung herzustellen.

  1. Öffne ein Terminal.

  2. Starte den SSH-Agenten im Hintergrund.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. Suche und notiere Dir Deinen ö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)
  4. Klicke in der oberen rechten Ecke einer beliebigen Seite auf Dein Profilfoto und klicke dann auf Settings (Einstellungen).

    Symbol „Settings" (Einstellungen) auf der Benutzerleiste

  5. Klicke in der Seitenleiste für Benutzereinstellungen auf SSH and GPG keys (SSH- und GPG-Schlüssel).

    Authentifizierungsschlüssel

  6. Vergleiche die Liste der SSH-Schlüssel mit der Ausgabe des Befehls ssh-add.

    SSH-Schlüssel-Auflistung in GitHub Enterprise

  1. Öffne die Befehlszeile.

  2. Starte den SSH-Agenten im Hintergrund.

    $ ssh-agent -s
    > Agent pid 59566
  3. Suche und notiere Dir Deinen ö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)
  4. Klicke in der oberen rechten Ecke einer beliebigen Seite auf Dein Profilfoto und klicke dann auf Settings (Einstellungen).

    Symbol „Settings" (Einstellungen) auf der Benutzerleiste

  5. Klicke in der Seitenleiste für Benutzereinstellungen auf SSH and GPG keys (SSH- und GPG-Schlüssel).

    Authentifizierungsschlüssel

  6. Vergleiche die Liste der SSH-Schlüssel mit der Ausgabe des Befehls ssh-add.

    SSH-Schlüssel-Auflistung in GitHub Enterprise

  1. Öffne ein Terminal.

  2. Starte den SSH-Agenten im Hintergrund.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. Suche und notiere Dir Deinen ö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)
  4. Klicke in der oberen rechten Ecke einer beliebigen Seite auf Dein Profilfoto und klicke dann auf Settings (Einstellungen).

    Symbol „Settings" (Einstellungen) auf der Benutzerleiste

  5. Klicke in der Seitenleiste für Benutzereinstellungen auf SSH and GPG keys (SSH- und GPG-Schlüssel).

    Authentifizierungsschlüssel

  6. Vergleiche die Liste der SSH-Schlüssel mit der Ausgabe des Befehls ssh-add.

    SSH-Schlüssel-Auflistung in GitHub Enterprise

Wenn Du Deinen öffentlichen Schlüssel in GitHub Enterprise nicht siehst, musst Du Deinen SSH-Schlüssel zu GitHub Enterprise hinzufügen, um ihn mit Deinem Computer zu verknüpfen.

Warnung: Wenn Du einen SSH-Schlüssel siehst, der Dir auf GitHub Enterprise unbekannt ist, solltest Du ihn sofort löschen und Dich für weitere Hilfe an den Ihr GitHub Enterprise-Websiteadministrator wenden. Ein Dir unbekannter öffentlicher Schlüssel kann ein Hinweis auf ein Sicherheitsproblem sein. Weitere Informationen findest Du unter „SSH-Schlüssel überprüfen.“

Menschliche Unterstützung einholen

Du kannst das Gesuchte nicht finden?

Kontakt