Nuit Blanche
· 5 min de lecture

Authentification SSH par clé vers un Raspberry Pi depuis Windows

#homelab #learning
Authentification SSH par clé vers un Raspberry Pi depuis Windows

En bref

Authentification SSH par clé vers un Raspberry Pi depuis Windows, étape par étape : générer une paire de clés, copier la clé publique sur le Pi, puis désactiver le mot de passe.

Ce guide montre comment se connecter de façon sécurisée à un Raspberry Pi par authentification SSH avec clé, depuis Windows. L’authentification classique par mot de passe fonctionne, mais les clés SSH offrent une méthode d’accès distant à la fois plus sûre et plus pratique.

Prérequis :

  • Windows 10 ou 11 avec PowerShell
  • Un Raspberry Pi avec SSH activé
  • Une connectivité réseau entre la machine Windows et le Raspberry Pi
  • Des bases en ligne de commande

Note : ce tutoriel utilise PowerShell comme outil principal. Visual Studio Code est mentionné comme amélioration optionnelle, mais n’est pas nécessaire pour se connecter en SSH.

Comprendre l’authentification SSH par clé

L’authentification SSH par clé utilise une paire de clés cryptographiques au lieu d’un mot de passe :

  • Clé privée : reste sur votre machine Windows (à ne jamais partager !)
  • Clé publique : se copie sur le Raspberry Pi

Cette méthode est plus sûre que le mot de passe et évite de retaper ses identifiants à chaque connexion.

Générer la paire de clés SSH

Ouvrir PowerShell

Appuyez sur Win + X et sélectionnez « Windows PowerShell », ou cherchez « PowerShell » dans le menu Démarrer.

Générer la paire de clés

Lancez la commande suivante pour créer une paire de clés moderne et sûre :

Terminal window
ssh-keygen -t ed25519 -C "[email protected]"

Pourquoi Ed25519 ? C’est plus sûr et plus performant que l’ancien algorithme RSA. Si vous avez besoin de RSA pour des raisons de compatibilité, utilisez :

Terminal window
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Configurer votre clé

Pendant la génération, plusieurs informations vous seront demandées :

Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\YourName\.ssh\id_ed25519): rpi_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Décisions importantes :

  • Nom du fichier : utilisez un nom parlant comme rpi_key pour identifier l’usage de cette clé
  • Passphrase : fortement recommandée pour la sécurité. Vous la saisirez à chaque utilisation de la clé. Je l’ai laissée vide pour l’instant.
  • Emplacement : les clés sont enregistrées dans C:\Users\%USERNAME%\.ssh\ par défaut

À la fin, vous obtenez deux fichiers :

  • rpi_key (clé privée : à garder précieusement !)
  • rpi_key.pub (clé publique : partageable sans risque)

Configurer le Raspberry Pi

Première connexion

Connectez-vous d’abord à votre Raspberry Pi par mot de passe :

Terminal window
ssh [email protected] # Replace with your Pi's IP address

Transférer la clé publique

Depuis PowerShell sous Windows, lancez :

Terminal window
type $env:USERPROFILE\.ssh\rpi_key.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Cette commande :

  1. Lit votre fichier de clé publique
  2. Crée le répertoire .ssh sur le Pi s’il n’existe pas
  3. Ajoute la clé au fichier authorized_keys

Définir les bonnes permissions

Toujours connecté au Pi, vérifiez les permissions :

Terminal window
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Ces permissions sont essentielles : SSH refuse les clés si les droits sont trop ouverts.

Tester l’authentification par clé

Tester la connexion

Depuis PowerShell, connectez-vous avec votre nouvelle clé :

Terminal window
ssh -i $env:USERPROFILE\.ssh\rpi_key [email protected]

Si vous avez défini une passphrase, elle vous sera demandée. Sinon, vous devriez vous connecter directement, sans invite de mot de passe.

Créer un fichier de configuration SSH (optionnel mais recommandé)

Cela simplifie les connexions suivantes. Créez ou modifiez C:\Users\%USERNAME%\.ssh\config :

Host rpi
HostName 192.168.1.100 # Your Pi's IP or hostname
User pi # Your Pi username
IdentityFile ~/.ssh/rpi_key
Port 22

Vous pouvez désormais vous connecter d’un simple :

Terminal window
ssh rpi

Optionnel : intégration avec Visual Studio Code

VSCode offre une excellente interface graphique pour les connexions SSH et le développement distant.

Installer l’extension Remote-SSH

  1. Ouvrez VSCode
  2. Allez dans les extensions (Ctrl+Shift+X)
  3. Cherchez « Remote - SSH » de Microsoft
  4. Installez l’extension

L'extension « Remote - SSH » de Microsoft dans la vue Extensions de VS Code

Configurer la connexion

  1. Appuyez sur Ctrl+Shift+P pour ouvrir la palette de commandes
  2. Tapez « Remote-SSH: Open Configuration File »
  3. Sélectionnez C:\Users\%USERNAME%\.ssh\config
  4. Ajoutez la configuration de votre Pi (si ce n’est pas déjà fait à l’étape 4.2)

Se connecter via VSCode

  1. Cliquez sur l’icône Remote Explorer dans la barre latérale
  2. Trouvez votre hôte « rpi »
  3. Cliquez sur l’icône de connexion
  4. VSCode ouvre une nouvelle fenêtre connectée à votre Pi

Avantages de VSCode :

  • Toutes les fonctions d’un IDE sur les fichiers distants
  • Terminal intégré
  • Explorateur de fichiers pour le Pi
  • Support des extensions sur l’hôte distant

Renforcer la sécurité

Une fois votre authentification par clé SSH fonctionnelle, envisagez ces renforcements de sécurité :

Durcissement de SSH

  • Désactiver l’authentification par mot de passe dans /etc/ssh/sshd_config
  • Changer le port SSH par défaut (22)
  • Mettre en place fail2ban pour la protection contre le brute-force

Gestion des clés

  • Utiliser ssh-agent pour mettre en cache la passphrase
  • Envisager des clés de sécurité matérielles (FIDO2/U2F)
  • Utiliser des clés différentes selon les environnements (dev/prod)

Sécurité réseau

  • Configurer des règles de pare-feu (ufw/iptables)

Conclusion

Vous avez configuré l’authentification SSH par clé entre Windows et votre Raspberry Pi. Cette configuration apporte :

  • Une sécurité renforcée par rapport au mot de passe
  • Le confort d’une connexion sans mot de passe (avec ssh-agent)
  • L’intégration avec des outils de développement comme VSCode

Cette base permet le développement distant sécurisé, le transfert de fichiers et l’administration système. Que vous montiez des projets IoT, appreniez Linux ou fassiez tourner de la domotique, un accès SSH sécurisé est une compétence indispensable.

Ressources complémentaires

Rappel : la sécurité est un chemin, pas une destination. Continuez à apprendre et restez à jour sur les bonnes pratiques !

À bientôt !
Yacine

Articles liés