Configurer un accès SSH sécurisé sur WSL Debian
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-server2. Configuration du serveur SSH
sudo nano /etc/ssh/sshd_configSyslogFacility 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_keys700 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 startVérification : sudo service ssh status
Vous devriez voir active (running).
6. Test de connexion
Depuis PowerShell :
ssh <votre_utilisateur>@localhostSi 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 22Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
Connection refused | Service SSH non démarré | sudo service ssh start |
Permission denied (publickey) | Clé publique absente ou mauvaises permissions | Vérifier ~/.ssh/authorized_keys et chmod 600 |
Bad owner or permissions | Permissions ~/.ssh/ incorrectes | chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
Too many authentication failures | MaxAuthTries atteint | Spécifier la clé : ssh -i ~/.ssh/id_ed25519 user@localhost |
| SSH se coupe après inactivité | ClientAliveCountMax 0 | Normal — reconnectez-vous ou ajustez ClientAliveInterval |