121 votes

Pourquoi ma clé SSH ne fonctionne-t-elle pas pour me connecter à github ?

Note : Je ne suis pas un débutant, et j'ai fait cela un milliard de fois, mais pour une raison quelconque aujourd'hui, cela a décidé de ne pas fonctionner.

Je reçois sans cesse le message Permission denied (publickey). message d'erreur lorsque j'essaie de me connecter à github via SSH ou lorsque j'essaie de cloner un repo, même après avoir refait la clé ssh et l'avoir ajoutée à "SSH Keys" dans mon compte.

Voici ce que j'ai essayé de faire dix fois aujourd'hui sans succès :

  1. créer une clé avec ssh-keygen.
  2. ouvrez ~/.ssh/id_rsa.pub avec Gedit ou Notepad++ et copiez le contenu.
  3. Allez dans les paramètres du compte sur github.com
  4. Aller à Clés SSH
  5. Cliquez sur le bouton Ajouter une clé.
  6. donner un titre à la clé
  7. coller la clé dans la boîte à clé.
  8. Enregistrez la clé (entrez mon mot de passe github pour vérifier).

Et maintenant, quand j'essaie de faire ssh github.com ça ne marche pas.... Qu'est-ce qui se passe ? Suis-je trop fatigué en ce moment ou ai-je raté quelque chose ?

Voici la sortie de ssh -vvv github.com

OpenSSH_5.9p1, OpenSSL 1.0.0f 4 Jan 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/trusktr/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/trusktr/.ssh/id_rsa type 1
debug1: identity file /home/trusktr/.ssh/id_rsa-cert type -1
debug1: identity file /home/trusktr/.ssh/id_dsa type -1
debug1: identity file /home/trusktr/.ssh/id_dsa-cert type -1
debug1: identity file /home/trusktr/.ssh/id_ecdsa type -1
debug1: identity file /home/trusktr/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5github2
debug1: match: OpenSSH_5.1p1 Debian-5github2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "github.com" from file "/home/trusktr/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 122/256
debug2: bits set: 510/1024
d    ebug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug3: load_hostkeys: loading entries for host "github.com" from file "/home/trusktr/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "207.97.227.239" from file "/home/trusktr/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/trusktr/.ssh/known_hosts:16
debug2: bits set: 497/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/trusktr/.ssh/id_rsa (0x14cce60)
debug2: key: trusktr@rocketship (0x14ce2b0)
debug2: key: /home/trusktr/.ssh/id_dsa ((nil))
debug2: key: /home/trusktr/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/trusktr/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: trusktr@rocketship
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/trusktr/.ssh/id_dsa
debug3: no such identity: /home/trusktr/.ssh/id_dsa
debug1: Trying private key: /home/trusktr/.ssh/id_ecdsa
debug3: no such identity: /home/trusktr/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

1voto

Carlos Saltos Points 11

Il s'agit d'une configuration de sécurité critique, à effectuer avec précaution.

GitHub vient de changer les clés de son serveur SSH et une mise à jour manuelle est nécessaire côté client, les étapes sont à suivre :

https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/

Les empreintes digitales SSH officielles à vérifier soigneusement se trouvent à l'adresse suivante https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints

IMPORTANT : Afin de prévenir d'éventuelles attaques, assurez-vous que les nouvelles empreintes digitales sont bien les empreintes officielles, si vous n'êtes pas sûr, exécutez simplement ssh-keygen -R github.com et réessayer

0voto

Matthias Luh Points 3

J'ai eu un problème similaire en passant de Windows 7 à Windows 10 en utilisant Git for Windows.

J'avais mes clés SSH pour un Gitlab de notre société sur mon ancien ordinateur et l'utilisation de cette commande ssh dans le cmd Windows ou le Git Bash fonctionnait bien (avec git.my_server.com remplacé par le domaine du serveur Git) - donc mon Windows était capable d'utiliser la clé, mais Git pour Windows ne l'était pas :

ssh -T git@git.my_server.com

(qui a affiché : "Welcome to GitLab, @my_username !). Cependant, en essayant de cloner, pousser ou tirer avec git, j'ai obtenu le message d'erreur "Permission denied (publickey)".

Je n'ai pas trouvé l'emplacement/environnement des clés SSH utilisées par Git, j'ai donc essayé de copier/coller les clés SSH dans cet environnement en utilisant le Git Bash :

  1. Ouvrez le Git Bash à partir du menu Démarrer de Windows (pas à partir d'un répertoire). Saisissez

    pwd

    J'ai découvert par la suite que cela renvoie l'emplacement de vos clés ssh. Dans mon cas, cela renvoyait '/u/', qui était un lecteur réseau monté en tant que "U:\" dans mon compte Windows.

  2. Type cd .ssh entonces dir . Il peut s'agir d'une liste de vos fichiers d'identification existants, comme id_rsa et id_rsa.pub. J'ai supprimé ces fichiers car je n'en avais plus besoin (vous pouvez sauter cette étape si vous avez utilisé avec succès d'autres clés SSH sur votre installation, par exemple pour d'autres serveurs Git) :

    rm id_rsa

    rm id_rsa.pub

  3. Créez un nouveau fichier id_rsa (si vous avez un fichier id_rsa existant, vous pouvez également utiliser un autre nom, comme id_rsa_gitlab_mon_nomd'utilisateur ou quelque chose comme ça. Ajoutez .pub à ce nom pour la clé publique) :

    vi id_rsa et appuyez sur le "i" de votre clavier pour passer en mode insertion de texte. Copiez ensuite le contenu de votre fichier de clé privée (le mien se trouve dans le dossier C:\Users\my_windows_username.ssh\id_rsa et j'ai utilisé Notepad++ pour copier le contenu complet, le bloc-notes de Windows fonctionne également très bien). Appuyez sur la touche Echap de votre clavier pour quitter le mode d'insertion de texte, puis entrez ':' et 'x', puis appuyez sur Entrée pour enregistrer le fichier. Répétez cette opération pour le fichier de la clé publique.

  4. Si vous utilisez plusieurs clés SSH ou si vous avez utilisé un autre nom pour le fichier id_rsa, vous devez également créer un fichier "config" ou copier le contenu de votre fichier de configuration existant :

    vi config

    (Encore une fois, appuyez sur 'i', insérez du texte, appuyez sur ':', 'x', puis Enter). Mon fichier ressemble à ceci (utilisez le nom de votre serveur, de votre utilisateur et de votre fichier SSH) :

    #SCC Gitlab
        Host git.my_server.com
        HostName git.my_server.com
        User git
        IdentityFile ~/.ssh/id_rsa

Désormais, mon Git pour Windows pouvait à nouveau pousser, tirer et cloner sans problème.

0voto

Bradley D Points 1243

Essayez d'abord ceci (en changeant votre adresse électronique si nécessaire)

 ssh-keygen -t rsa -b 4096 -C "you@yourdomain.com"

Si vous créez en utilisant Cygwin, il peut y avoir une confusion sur le répertoire personnel, ce qui s'est produit pour moi, car je me référais (en copiant sur GitHub) à une ancienne/incorrecte clé d'un répertoire différent. Donc, si cela vous arrive, après avoir créé la clé, faites :

$ explorer .

Ce qui fera apparaître une fenêtre de l'explorateur Windows, montrant votre chemin d'accès complet/absolu. C'est alors que j'ai vu que le répertoire ~ était en fait mon répertoire Cygwin

C:\Program Files\cygwin64\home\{your_username}\.ssh

J'ai alors pu copier ma clé SSH privée et la coller dans GitHub, et le clonage, etc. a alors fonctionné.

0voto

Daniel Points 1

J'ai eu un problème similaire sous Gnome. La configuration était correcte mais les clés n'étaient pas ajoutées à ssh-agent. Un redémarrage a suffi. Gnome Keyring utilise son propre ssh-agent.

0voto

Moshisho Points 1604

Dans mon cas, c'était parce que j'avais deux utilisateurs, qui avaient tous deux une clé SSH. Le premier qui a été authentifié n'était pas celui dont j'avais besoin. J'ai donc supprimé la clé SSH.

Cette commande m'a permis de comprendre quel utilisateur est utilisé grâce à son résultat :

ssh -T git@github.com

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X