Connexion ssh renvoie "Permission denied (publickey)"

Résolu
Lume51 Messages postés 30 Statut Membre -  
mamiemando Messages postés 34180 Statut Modérateur -

Bonjour,

J'ai consulté en vain les posts du forum concernant les difficultés rencontrées pour se connecter avec ssh  avec Linux Mint 22.1

J'ai un Raspberry 3 model B que je veux utiliser comme serveur. Tout fonctionnait bien jusqu'au moment où la connexion a affiché  

 "Permission denied (publickey)

J'ai cherché la solution dans un grand nombre d'es articles sur Internet, sans succès. J'ai donc reconfiguré la carte avec Raspberry Pi Imager mais la connexion reste toujours impossible. 

Des infos indispensables 

  • Relance de ssh
bernard@bernardlm:~$ sudo systemctl reload ssh
bernard@bernardlm:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: en>
     Active: active (running) since Wed 2025-09-24 07:17:54 CEST; 1h 15min ago
TriggeredBy: ● ssh.socket
.....
>
sept. 24 08:33:01 bernardlm sshd[1597]: Received SIGHUP; restarting.
sept. 24 08:33:01 bernardlm sshd[1597]: Server listening on 0.0.0.0 port 22.
sept. 24 08:33:01 bernardlm sshd[1597]: Server listening on :: port 22.
lines 1-25/25 (END)

Extraits 

USER@USERlm:~$ ssh -vvv  ***@***
OpenSSH_9.6p1 Ubuntu-3ubuntu13.14, OpenSSL 3.0.13 30 Jan 2024
debug1: Reading configuration data /home/USER/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config

.....................


debug3: remaining preferred: keyboard-interactive
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug3: ssh_get_authentication_socket_path: path '/run/user/1000/keyring/ssh'
debug1: get_agent_identities: bound agent to hostkey
debug1: get_agent_identities: agent returned 2 keys
debug1: Will attempt key: /home/USER/.ssh/id_ecdsa ECDSA SHA256:XXXXXXXXXXXXXXXX agent
debug1: Will attempt key: /home/USER/.ssh/id_ed25519 ED25519 SHA256:XXXXXXXXXXXXXXXXXXX agent
debug1: Will attempt key: /home/USER/.ssh/id_rsa
debug1: Will attempt key: /home/USER/.ssh/id_ecdsa_sk
debug1: Will attempt key: /home/USER/.ssh/id_ed25519_sk
debug1: Will attempt key: /home/USER/.ssh/id_xmss
debug1: Will attempt key: /home/USER/.ssh/id_dsa
debug2: pubkey_prepare: done
debug1: Offering public key: /home/USER/.ssh/id_ecdsa ECDSA SHA256:XXXXXXXXXXXXXXXX agent
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug1: Offering public key: /home/USER/.ssh/id_ed25519 ED25519 SHA256:XXXXXXXXXXXXXXXXXXXXXX agent
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/USER/.ssh/id_rsa
debug3: no such identity: /home/USER/.ssh/id_rsa: No such file or directory
debug1: Trying private key: /home/USER/.ssh/id_ecdsa_sk
debug3: no such identity: /home/USER/.ssh/id_ecdsa_sk: No such file or directory
debug1: Trying private key: /home/USER/.ssh/id_ed25519_sk
debug3: no such identity: /home/USER/.ssh/id_ed25519_sk: No such file or directory
debug1: Trying private key: /home/USER/.ssh/id_xmss
debug3: no such identity: /home/USER/.ssh/id_xmss: No such file or directory
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
***@***: Permission denied (publickey).
bernard@bernardlm:~/.ssh$ ls -l
total 24
-rw------- 1 bernard bernard    0 sept. 23 07:21 authorized_keys
-rw-r--r-- 1 bernard bernard    0 sept. 23 14:41 config
-rw------- 1 bernard bernard  736 sept. 23 09:45 id_ecdsa
-rw-r--r-- 1 bernard bernard  271 sept. 23 09:45 id_ecdsa.pub
-rw------- 1 bernard bernard  411 sept. 23 09:46 id_ed25519
-rw-r--r-- 1 bernard bernard   99 sept. 23 09:46 id_ed25519.pub
-rw-r--r-- 1 bernard bernard  426 sept. 22 21:55 known_hosts
-rw-r--r-- 1 bernard bernard    0 sept. 23 09:05 known_hosts2
bernard@bernardlm:~$ ssh-copy-id XXX@192.168.1.250
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys
XXX@192.168.1.250: Permission denied (publickey).

Je n'ai pas trouvé comment répondre à 

/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys

J'ai également modifié le fichier /etc/ssh/sshd_config (extraits)

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

# When systemd socket activation is used (the default), the socket
# configuration must be re-generated after changing Port, AddressFamily, or
# ListenAddress.
#
# For changes to take effect, run:
#
   systemctl daemon-reload
   systemctl restart ssh.socket
#
Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

Il y a peut-être un pb de droits qui m'a échappé. 

Merci à tous. 


Linux / Firefox 143.0

A voir également:

4 réponses

mamiemando Messages postés 34180 Statut Modérateur 7 888
 

Bonjour,

Préliminaires

Avant de rentrer dans le vif du sujet, il faut d'abord bien comprendre ce que fait ssh-copy-id :

  1. ssh-copy-id se connecte à un serveur SSH cible avec un compte cible. L'authentification est réalisée commune avec une commande ssh ordinaire (typiquement avec une clé SSH préinstallée au niveau du compte cible, et dans le cas contraire, à l'aide d'un mot de passe si le serveur SSH l'autorise). Cela signifie que si tu ne peux pas te connecter avec la commande ssh, aucune chance que ssh-copy-id te débloque (et encore heureux, sinon n'importe qui pourrait installer sa clé SSH chez n'importe qui !).
  2. Si le dossier ~/.ssh n'est pas présent dans le compte cible, il est créé avec les droits adéquats
  3. Si le fichier ~/.ssh/authorized_keys n'est pas présent dans le compte cible, il est créé avec les droits adéquats
  4. Le fichier ~/.ssh/authorized_keys est complété avec la clé (publique) SSH passée en paramètre à ssh-copy-id.

En résumé, ssh-copy-id n'est qu'un "facilitateur" comparé à ce que tu pourrais faire "à la main" au travers de ssh. Si tu ne peux pas te connecter en ssh, tu ne peux pas te connecter avec ssh-copy-id.

Retour à ton problème

Il y a deux grandes causes (non exclusives) possibles à ton problèmes

Problème de connectivité

Avant d'aller plus avant, il faut s'assurer que le problème n'est pas d'ordre réseau. :

  • le routage entre le client est correct (par exemple, tu arrives à pinger ton serveur depuis le client) 
    ping -c2 mon.serveur.ssh.fr
    
  • il n'y a pas de problème de pare feu (au niveau du client, du serveur, ou entre les deux) afin que la connexion ssh puisse s'établir.
    • Un outil comme nmap peut t'aider à scanner les ports d'une machine et vérifier les ports qui semblent ouvert.
      sudo apt update
      sudo apt install nmap
      nmap -Pn -p 22 mon.serveur.ssh.fr
      Tu devrais voir : 
      Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-25 16:54 CEST
      Nmap scan report for **** (137.194.47.130)
      Host is up (0.0058s latency).
      Other addresses for **** (not scanned): ****
      rDNS record for ****: ****
      
      PORT   STATE SERVICE
      22/tcp open  ssh
      
      Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

Problème au niveau de la configuration du serveur SSH

Tes messages ne donnent pas non plus d'indications sur la manière dont est configuré le serveur et donc ne permettent pas de savoir dans quelle mesure ton client peut se connecter (avec ssh ou ssh-copy-id). Notamment, est-il possible de se connecter par mot de passe ?

Pour cela il faut vérifier côté serveur si l'option PasswordAuthentication no y est présente dans /etc/ssh/sshd_config ou l'un des éventuels fichiers contenus dans /etc/ssh/sshd_config.d.

  • Côté serveur, que donne la commande : 
    grep -nr PasswordAuthentication /etc/ssh/sshd_config*

Résolution du problème

Ensuite de deux choses l'unes :

  • Soit l'authentification par mot de passe est possible : si aucune clé SSH privée côté client (voir ~/.ssh/*) ne concorde avec une clé publique référencée côté serveur (voir ~/.ssh/authorized_keys), alors ssh-copy-id devrait te basculer en authentification par mot de passe (faute de trouver une clé SSH valide).
  • Soit l'authentification par mot de passe n'est pas possible : deux approches possibles :
    • Méthode 1 :
      1. Commenter temporairement l'option PasswordAuthentication no côté serveur dans le.s fichier.s concernés, pour retomber dans le cas précédent.
      2. Relancer le serveur ssh côté serveur. 
        sudo service ssh restart
      3. Relancer la commande ssh-copy-id côté client.
    • Méthode 2 :
      • Côté serveur créer/compléter manuellement le fichier ~/.ssh/authorized_keys par une autre moyen (accès local ou via un autre compte au serveur). En admettant que le compte cible soit toto, et que son home soit /home/toto, alors ~ = ~toto = /home/toto
        • Créer le dossier ~/.ssh avec les droits adéquats : 
          mkdir ~toto/.ssh
          # Si l'on n'est pas connecté en toto, lancer aussi:
          sudo chown -R toto:toto ~toto/.ssh
          sudo chmod 600 ~toto/.ssh
        • Créer le fichier ~/.ssh/authorized_hosts avec les droits adéquats : 
          touch ~toto/.ssh/authorized_keys
          # Si l'on n'est pas connecté en toto, lancer aussi:
          sudo chown -R toto:toto ~toto/.ssh/authorized_keys
          sudo chmod 700 ~toto/.ssh/authorized_keys
        • Ajouter à la fin de ce fichier une nouvelle ligne contenant la clé publique (voir côté client, e.g., ~/.ssh/id_rsa.pub).

Bonne chance

1
brucine Messages postés 22999 Statut Membre 3 570
 

Bonjour,

Je ne sais pas.

Un tuto pour mettre en place les clés publique et privée avec Linux Mint (le problème semble résider au moins dans la création des clés privées)?

https://cloudspinx.com/how-to-use-ssh-and-ssh-keys-on-linux-mint/

0
Lume51 Messages postés 30 Statut Membre 2
 

Bonsoir, 

J'ai bien regardé le tuto sans trouver la solution. 

J'ai constaté quelque chose qui pourrait me / nous mettre sur la piste. 

bernard@bernardlm:~$ ssh-copy-id XXX@XXX
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 3 key(s) remain to be installed -- if you are prompted now it is to install the new keys
***@***: Permission denied (publickey).

Lorsque je copie une autre clé, j'obtiens ça. Je ne sais pas comment faire pour copier les autres formats de clé (est-ce utile d'en installer d'autres car mon site est modeste et non marchand et comment supprimer celles déjà installées ( voir à la fin)

bernard@bernardlm:~$ ssh-copy-id_ecdsa XXX@XXX
ssh-copy-id_ecdsa : commande introuvable

Extraits des logs de ssh XXX@192.168.1.250 -v

debug1: Authenticating to 192.168.1.250:22 as 'XXX'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: ***@***
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: ***@*** MAC: <implicit> compression: none
debug1: kex: client->server cipher: ***@*** MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ssh-ed25519 SHA256:YXXXXXXXXXX
debug1: Host '192.168.1.250' is known and matches the ED25519 host key.

La connexion au serveur fonctionne 

debug1: Host '192.168.1.250' is known and matches the ED25519 host key.
debug1: Found key in /home/bernard/.ssh/known_hosts:3
debug1: ssh_packet_send2_wrapped: resetting send seqnr 3
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: ssh_packet_read_poll2: resetting read seqnr 3
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,***@***,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,***@***,***@***,ssh-dss,ssh-rsa,rsa-sha2-256,rsa-sha2-512>
debug1: kex_ext_info_check_ver: ***@***=<0>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: get_agent_identities: bound agent to hostkey
debug1: get_agent_identities: agent returned 3 keys
debug1: Will attempt key: /home/bernard/.ssh/id_ed25519 ED25519 SHA256:XXXXXXXXXXXXXXXagent
debug1: Will attempt key: /home/bernard/.ssh/id_rsa RSA SHA256:XXXXXXXXXXXXXXX agent
debug1: Will attempt key: bernard@bernardlm ED25519 SHA256:XXXXXXXXXXXXXX agent
debug1: Will attempt key: /home/bernard/.ssh/id_ecdsa
debug1: Will attempt key: /home/bernard/.ssh/id_ecdsa_sk
debug1: Will attempt key: /home/bernard/.ssh/id_ed25519_sk
debug1: Will attempt key: /home/bernard/.ssh/id_xmss
debug1: Will attempt key: /home/bernard/.ssh/id_dsa
debug1: Offering public key: /home/bernard/.ssh/id_ed25519 ED25519 SHA256:XXXXXXXXXXXXXXXX agent
debug1: Authentications that can continue: publickey
debug1: Offering public key: /home/bernard/.ssh/id_rsa RSA SHA256:XXXXXXXXXXXXXX agent
debug1: Authentications that can continue: publickey
debug1: Offering public key: bernard@bernardlm ED25519 SHA256:XXXXXXXXXXXXXXXXXXXX agent
debug1: Authentications that can continue: publickey

Trois clés sont acceptées :

id_ed25519, id_rsa,  bernard@bernardlm ED25519 ( je ne comprends pas bien le nom qui ne commence pas par "id".)

debug1: get_agent_identities: bound agent to hostkey
debug1: get_agent_identities: agent returned 3 keys
debug1: Will attempt key: /home/bernard/.ssh/id_ed25519 ED25519 SHA256:XXXXXXXXXXXXXXXagent
debug1: Will attempt key: /home/bernard/.ssh/id_rsa RSA SHA256:XXXXXXXXXXXXXXX agent
debug1: Will attempt key: bernard@bernardlm ED25519 SHA256:XXXXXXXXXXXXXX agent
debug1: Will attempt key: /home/bernard/.ssh/id_ecdsa
debug1: Will attempt key: /home/bernard/.ssh/id_ecdsa_sk
debug1: Will attempt key: /home/bernard/.ssh/id_ed25519_sk
debug1: Will attempt key: /home/bernard/.ssh/id_xmss
debug1: Will attempt key: /home/bernard/.ssh/id_dsa
debug1: Offering public key: /home/bernard/.ssh/id_ed25519 ED25519 SHA256:XXXXXXXXXXXXXXXX agent
debug1: Authentications that can continue: publickey
debug1: Offering public key: /home/bernard/.ssh/id_rsa RSA SHA256:XXXXXXXXXXXXXX agent
debug1: Authentications that can continue: publickey
debug1: Offering public key: bernard@bernardlm ED25519 SHA256:XXXXXXXXXXXXXXXXXXXX agent
debug1: Authentications that can continue: publickey

   Les clés aux formats  id_ecdsa_sk,id_ecdsa,id_ed25519_sk, id_xmss, id_dsa n'ont pas été copiées. 

Est-il possible de les supprimer du serveur en sachant que la connexion fonctionne ? Sinon, comment copier les clés à ces formats du PC vers le serveur ?  

Je regarde  How to remove ssh keys? J'arrête pour aujourd'hui !!

0
brucine Messages postés 22999 Statut Membre 3 570
 

Bonjour,

Comme dit, c'est un domaine où je ne suis pas très compétent.

Sur la commande ssh-copy-id il y a une erreur de syntaxe, il ne doit pas y avoir autre chose qu'un espace avant l'identifiant à suivre username @ remote-user-IP

Seule la clé publique est en principe copiée vers le serveur selon lien précédent.

Pour y supprimer une clé voir:

https://www.hostragons.com/en/blog/linux-ssh-key-removal/

0
Lume51 Messages postés 30 Statut Membre 2
 

Bonjour et merci pour cette réponse si complète. 
J'ai solutionné le pb en accédant à la micro carte sd via un adaptateur et en commentant temporairement l'option PasswordAuthentication no. Je n'ai pas encore intégralement terminé mais cela fonctionne. 

Une nouvelle fois, merci !

0
mamiemando Messages postés 34180 Statut Modérateur 7 888
 

Super, toutes mes félicitations. Je t'invite à installer ta clé SSH installée (par exemple avec ssh-copy-id, car tant que cette option est activée, tu peux de t'authentifier par mot de passe). Puis pour re-sécuriser ton serveur SSH, désactive cette option et relance ton serveur SSH.

0