🔒 Sécurité

Configurer un accès SSH sécurisé sur WSL Debian

📅 17 juin 20258 min de lecture
sshdebianwsl2

Pourquoi SSH sur WSL ?

Sans SSH, les seuls moyens d'interagir avec WSL sont le terminal Windows ou les outils WSL intégrés. Avec SSH on peut :

  • Connecter PhpStorm en SFTP pour déployer des fichiers directement dans WSL
  • Utiliser un terminal distant depuis n'importe quel outil
  • Accéder à WSL depuis d'autres machines du réseau

1. Installation du serveur SSH

sudo apt install openssh-server

2. Configuration du serveur SSH

sudo nano /etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel VERBOSE
LoginGraceTime 2m
StrictModes yes
PermitRootLogin no
PermitEmptyPasswords no
MaxAuthTries 3
MaxSessions 10
PasswordAuthentication no
PubkeyAuthentication yes
Protocol 2
ClientAliveInterval 900
ClientAliveCountMax 0
PrintMotd no
Banner none
AllowUsers <votre_utilisateur>

StrictModes yes — vérifie que les permissions des fichiers ~/.ssh/ sont correctes avant d'autoriser la connexion

PermitRootLogin no — interdit toute connexion directe en root

PasswordAuthentication no — désactive l'authentification par mot de passe, clé SSH uniquement

MaxAuthTries 3 — après 3 tentatives échouées, la connexion est coupée

AllowUsers — liste blanche des utilisateurs autorisés, tous les autres sont refusés

Une fois cette option activée, seule l'authentification par clé fonctionne. Assurez-vous que votre clé publique est bien en place avant de redémarrer SSH, sinon vous risquez de vous bloquer.

3. Générer la clé SSH depuis Windows

Dans PowerShell :

ssh-keygen -t ed25519 -C "phpstorm-wsl"

Laissez le chemin par défaut (C:\Users\<vous>\.ssh\id_ed25519). Vous pouvez ajouter une passphrase pour sécuriser la clé.

ED25519 est un algorithme moderne basé sur les courbes elliptiques. Il est plus rapide, plus sécurisé et produit des clés bien plus courtes que RSA 4096, tout en offrant un niveau de sécurité équivalent.

4. Copier la clé publique dans WSL

mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat /mnt/c/Users/<VotreUser>/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

700 sur ~/.ssh/ — seul le propriétaire peut lire et écrire dans ce dossier

600 sur authorized_keys — seul le propriétaire peut lire ce fichier

Si les permissions sont incorrectes, SSH refusera de fonctionner avec StrictModes yes.

Vérification : cat ~/.ssh/authorized_keys

Vous devriez voir votre clé commençant par ssh-ed25519.

5. Démarrage automatique

sudo systemctl enable ssh
sudo service ssh start

Vérification : sudo service ssh status

Vous devriez voir active (running).

6. Test de connexion

Depuis PowerShell :

ssh <votre_utilisateur>@localhost

Si la connexion s'établit sans demande de mot de passe (ou avec la passphrase si vous en avez mis une), tout est en ordre. 🎉

Vérifiez les logs SSH dans WSL : sudo journalctl -u ssh -n 50

Commandes utiles

sudo service ssh start        # Démarrer SSH
sudo service ssh stop         # Arrêter SSH
sudo service ssh restart      # Redémarrer SSH
sudo service ssh status       # État du service
 
sudo journalctl -u ssh -f     # Logs SSH en temps réel
sudo journalctl -u ssh -n 50  # 50 dernières lignes de logs
 
# Tester la config sans redémarrer
sudo sshd -t
 
# Voir les connexions actives
who
ss -tnp | grep 22

Erreurs fréquentes

ErreurCauseSolution
Connection refusedService SSH non démarrésudo service ssh start
Permission denied (publickey)Clé publique absente ou mauvaises permissionsVérifier ~/.ssh/authorized_keys et chmod 600
Bad owner or permissionsPermissions ~/.ssh/ incorrecteschmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
Too many authentication failuresMaxAuthTries atteintSpécifier la clé : ssh -i ~/.ssh/id_ed25519 user@localhost
SSH se coupe après inactivitéClientAliveCountMax 0Normal — reconnectez-vous ou ajustez ClientAliveInterval