Authentification par clé publique sur un serveur SSH

03 juillet 2025 — par admin_libra

L’authentification par clé publique est une méthode sécurisée pour se connecter à un serveur SSH sans avoir à utiliser un mot de passe. Elle repose sur l’utilisation d’une paire de clés cryptographiques : une clé privée et une clé publique. Voici un guide détaillé sur la configuration et l’utilisation de cette méthode d’authentification.

Principe de l’authentification par clé publique

L’authentification par clé publique utilise une paire de clés :

  • Clé privée : Cette clé doit être gardée secrète et stockée de manière sécurisée sur le client.
  • Clé publique : Cette clé peut être partagée et est placée sur le serveur.

Lors de la connexion, le client prouve qu’il possède la clé privée correspondante à la clé publique stockée sur le serveur, permettant ainsi une authentification sécurisée.

Configuration du serveur SSH sous Linux

Installation du serveur SSH

Sur la plupart des distributions Linux, le serveur SSH peut être installé via le gestionnaire de paquets. Par exemple, sur une distribution basée sur Debian comme Ubuntu, vous pouvez utiliser la commande suivante :

# Mettre à jour la liste des paquets
sudo apt update
sudo apt install openssh-server

Configuration du serveur SSH

Le fichier de configuration principal du serveur SSH est généralement situé dans /etc/ssh/sshd_config. Vous pouvez le modifier pour renforcer la sécurité et permettre l’authentification par clé publique.

# Éditer le fichier de configuration
sudo nano /etc/ssh/sshd_config

Assurez-vous que les lignes suivantes sont présentes et décommentées :

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Redémarrez le service SSH pour appliquer les modifications :

# Redémarrer le service
sudo systemctl restart ssh

Génération des clés sur le client

Sous Linux et macOS

Pour générer une paire de clés sur un client Linux ou macOS, utilisez la commande suivante :

# Générer une paire de clés SSH
ssh-keygen -t rsa -b 4096

Cette commande génère une paire de clés RSA de 4096 bits. Vous serez invité à spécifier un emplacement pour sauvegarder la clé et à entrer une phrase de passe optionnelle pour protéger la clé privée.

Sous Windows

Sur Windows, vous pouvez utiliser PuTTYgen pour générer une paire de clés. Téléchargez et installez PuTTY, puis lancez PuTTYgen. Suivez les instructions pour générer une paire de clés et sauvegardez la clé privée et la clé publique.

Copie de la clé publique sur le serveur – manuellement

La clé publique est généralement stockée dans le fichier ~/.ssh/id_rsa.pub. Vous pouvez afficher son contenu avec la commande suivante :

cat ~/.ssh/id_rsa.pub

Copiez le contenu de ce fichier. Il devrait ressembler à quelque chose comme ceci :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8tXv... user@client

Connectez-vous à votre serveur SSH en utilisant votre mot de passe :

ssh user@server_ip

Une fois connecté au serveur, assurez-vous que le répertoire .ssh existe dans votre répertoire personnel. Si ce n’est pas le cas, créez-le :

mkdir -p ~/.ssh

Assurez-vous que les permissions du répertoire .ssh sont correctes :

chmod 700 ~/.ssh

Ensuite, créez ou modifiez le fichier authorized_keys dans le répertoire .ssh :

nano ~/.ssh/authorized_keys

Collez la clé publique que vous avez copiée précédemment dans le fichier authorized_keys. Assurez-vous que la clé est sur une seule ligne.

Assurez-vous que les permissions du fichier authorized_keys sont correctes :

chmod 600 ~/.ssh/authorized_keys

Copie de la clé publique sur le serveur – automatique avec ssh-copy-id

Pour copier la clé publique sur le serveur, utilisez la commande ssh-copy-id :

# Copier la clé publique vers le serveur distant
ssh-copy-id user@server_ip

Cette commande copie la clé publique dans le fichier ~/.ssh/authorized_keys sur le serveur.

Sous Windows

Avec PuTTY, vous pouvez utiliser l’outil pscp pour copier la clé publique sur le serveur. Par exemple :

pscp C:pathtopublic_key.pub user@server_ip:/home/user/.ssh/authorized_keys

Connexion au serveur SSH

Sous Linux et macOS

Pour se connecter au serveur SSH, utilisez la commande suivante :

ssh user@server_ip

Si votre clé privée est protégée par une phrase de passe, vous serez invité à l’entrer.

Sous Windows

Avec PuTTY, chargez votre clé privée dans PuTTYgen, puis utilisez PuTTY pour vous connecter au serveur en spécifiant l’utilisateur et l’adresse IP du serveur.

Exemples d’implémentation et d’utilisation

Exemple 1 : Connexion depuis un client Linux

  1. Générez une paire de clés sur le client :
# Générer une paire de clés SSH
ssh-keygen -t rsa -b 4096
  1. Copiez la clé publique sur le serveur :
# Copier la clé publique vers le serveur distant
ssh-copy-id user@server_ip
  1. Connectez-vous au serveur :
ssh user@server_ip

Exemple 2 : Connexion depuis un client Windows

  1. Générez une paire de clés avec PuTTYgen.

  2. Sauvegardez la clé privée et copiez la clé publique sur le serveur avec pscp.

  3. Utilisez PuTTY pour vous connecter au serveur en chargeant la clé privée.

 

Exemple complet

Voici un exemple complet des commandes à exécuter sur le client et le serveur :

Sur le client :

# Générer une paire de clés
ssh-keygen -t rsa -b 4096

# Afficher la clé publique
cat ~/.ssh/id_rsa.pub

Sur le serveur :

# Se connecter au serveur
ssh user@server_ip

# Créer le répertoire .ssh

mkdir -p ~/.ssh

# Configurer les permissions du répertoire .ssh

chmod 700 ~/.ssh

# Ajouter la clé publique dans authorized_keys

nano ~/.ssh/authorized_keys

# Configurer les permissions du fichier authorized_keys

chmod 600 ~/.ssh/authorized_keys

# Déconnecter

exit

Sur le client :

# Se reconnecter au serveur
ssh user@server_ip

Bonnes pratiques de sécurité

PasswordAuthentication no

Conclusion

L’authentification par clé publique est une méthode robuste et sécurisée pour se connecter à un serveur SSH. En suivant les étapes décrites dans cet article, vous pouvez configurer et utiliser cette méthode d’authentification sur des clients Linux, macOS et Windows.

Index complet

Tous les articles (48)

Date Article Tags
30/06/2026 PHP : gérer plusieurs versions PHP-FPM avec les dépôts Sury sur Debian/Ubuntu administration apache debian 22/06/2026 OS : Cycle de vie LTS et mise à jour des distributions — apt dist-upgrade et do-release-upgrade sous Debian / Ubuntu apt cycle-de-vie debian 17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs