Skip to main content

Erreur : Autorisation refusée (clé publique)

L’erreur « Autorisation refusée » signifie que le serveur a rejeté votre connexion. Il peut y avoir plusieurs raisons à cela, et les exemples les plus courants vous sont expliqués ci-dessous.

Platform navigation

La commande sudo ou les privilèges élevés doivent-ils être utilisés avec Git ?

Vous ne devez pas utiliser la commande sudo ou les privilèges élevés, tels que les autorisations d’administrateur, avec Git.

Si vous avez une très bonne raison d’utiliser sudo, assurez-vous de l’utiliser avec chaque commande. Si vous générez des clés SSH sans sudo puis essayez d’utiliser une commande comme sudo git push, vous n’utiliserez pas les mêmes clés que celles que vous avez générées.

Vérifier que vous vous connectez au serveur approprié

Pour vous assurer que vous vous connectez au domaine approprié, vous pouvez entrer la commande suivante :

Shell
ssh -vT git@HOSTNAME

Cette sortie doit s’afficher :

> OpenSSH_8.1p1, LibreSSL 2.7.3
> debug1: Reading configuration data /Users/YOU/.ssh/config
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug1: /etc/ssh/ssh_config line 47: Applying options for *
> debug1: Connecting to HOSTNAME port 22.

La connexion doit être établie sur le port 22.

Utiliser toujours l’utilisateur « git »

Toutes les connexions, y compris celles des URL distantes, doivent être effectuées en tant qu’utilisateur « git ». Si vous essayez de vous connecter avec votre nom d’utilisateur GitHub Enterprise Server, l’opération échoue :

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

Si votre connexion a échoué et que vous utilisez une URL distante avec votre nom d’utilisateur GitHub Enterprise Server, vous pouvez changer l’URL distante pour utiliser l’utilisateur « git ».

Vous devez vérifier votre connexion en tapant :

Shell
ssh -T git@HOSTNAME

Cette sortie doit s’afficher :

> Hi USERNAME! You've successfully authenticated...

Vérifier que vous disposez d’une clé en cours d’utilisation

  1. Ouvrez TerminalTerminalGit Bash.

  2. Vérifiez que vous avez une clé privée générée et chargée dans SSH.

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    

Si vous avez installé GitHub Desktop, vous pouvez l’utiliser pour cloner des référentiels, sans utiliser de clés SSH.

  1. Si vous utilisez Git Bash, activez ssh-agent :

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Si vous utilisez une autre invite de terminal, telle que Git pour Windows, activez ssh-agent :

    # start the ssh-agent in the background
    $ eval $(ssh-agent -s)
    > Agent pid 59566
    

    Remarque : Les commandes eval ci-dessus démarrent manuellement ssh-agent dans votre environnement. Ces commandes peuvent échouer si ssh-agent s’exécute déjà en tant que service système en arrière-plan. Si cela se produit, nous vous recommandons de consulter la documentation appropriée pour votre environnement.

  2. Vérifiez que vous avez une clé privée générée et chargée dans SSH.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  1. Ouvrez TerminalTerminalGit Bash.

  2. Vérifiez que vous avez une clé privée générée et chargée dans SSH.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    

La commande ssh-add doit afficher une longue chaîne de chiffres et de lettres. Si elle n’affiche rien, vous devez générer une nouvelle clé SSH et l’associer à GitHub Enterprise Server.

Conseil : Sur la plupart des systèmes, les clés privées par défaut (~/.ssh/id_rsa et ~/.ssh/identity) sont automatiquement ajoutées à l’agent d’authentification SSH. Vous n’avez pas besoin d’exécuter ssh-add path/to/key, sauf si vous remplacez le nom de fichier quand vous générez une clé.

Obtention de détails supplémentaires

Vous pouvez également vérifier que la clé est en cours d’utilisation en essayant de vous connecter à git@HOSTNAME :

Shell
ssh -vT git@HOSTNAME

La sortie qui s’affiche se présente comme suit :

> ...
> 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).

Dans cet exemple, SSH n’a trouvé aucune clé.

  • La chaîne « -1 » à la fin des lignes « identity file » signifie que SSH n’a pas pu trouver de fichier à utiliser.
  • Les lignes « Trying private key » indiquent qu’aucun fichier n’a été trouvé.

Si un fichier existait, ces lignes indiqueraient « 1 » et « Offering public key », comme dans ce résultat :

> ...
> 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

Vérifier que la clé publique est attachée à votre compte

Vous devez fournir votre clé publique à GitHub Enterprise Server pour établir une connexion sécurisée.

  1. Ouvrez le terminal.

  2. Démarrez l’agent SSH en arrière-plan.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    
  3. Recherchez et notez l’empreinte digitale de votre clé publique.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. Dans l’angle supérieur droit d’une page de GitHub, cliquez sur la photo de votre profil, puis sur Paramètres.

  5. Dans la section « Accès » de la barre latérale, cliquez sur Clés SSH et GPG.

  6. Comparez la liste des clés SSH à la sortie de la commande ssh-add.

  1. Ouvrez la ligne de commande.

  2. Démarrez l’agent SSH en arrière-plan.

    $ ssh-agent -s
    > Agent pid 59566
    
  3. Recherchez et notez l’empreinte digitale de votre clé publique.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. Dans l’angle supérieur droit d’une page de GitHub, cliquez sur la photo de votre profil, puis sur Paramètres.

  5. Dans la section « Accès » de la barre latérale, cliquez sur Clés SSH et GPG.

  6. Comparez la liste des clés SSH à la sortie de la commande ssh-add.

  1. Ouvrez le terminal.

  2. Démarrez l’agent SSH en arrière-plan.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    
  3. Recherchez et notez l’empreinte digitale de votre clé publique. Si vous utilisez OpenSSH 6.7 ou version antérieure :

    $ 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)
    

    Si vous utilisez OpenSSH 6.8 ou version ultérieure :

    $ 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. Dans l’angle supérieur droit d’une page de GitHub, cliquez sur la photo de votre profil, puis sur Paramètres.

  5. Dans la section « Accès » de la barre latérale, cliquez sur Clés SSH et GPG.

  6. Comparez la liste des clés SSH à la sortie de la commande ssh-add.

Si vous ne voyez pas votre clé publique dans GitHub Enterprise Server, vous devez ajouter votre clé SSH à GitHub Enterprise Server pour l’associer à votre ordinateur.

Avertissement : Si vous voyez une clé SSH que vous ne connaissez pas sur GitHub Enterprise Server, supprimez-la immédiatement et contactez le votre administrateur de site pour obtenir de l’aide. Une clé publique non identifiée peut indiquer un problème de sécurité. Pour plus d’informations, consultez « Examen de vos clés SSH ».