Configurer un routeur pour activer le ssh depuis le côté WAN.
Si le routeur a déjà vécu une première vie il est peut être le moment de faire le ménage. Dans ce cas c'est ici.
Compatibilité SSH entre clients modernes et routeurs GL.iNet (Dropbear)
Le problème
Les routeurs GL.iNet basés sur OpenWRT utilisent Dropbear comme serveur SSH, un démon léger mais limité en termes de prise en charge des algorithmes cryptographiques. En particulier, Dropbear ne supporte que l’algorithme de signature ssh-rsa basé sur SHA-1 pour les clés RSA. Or, les clients OpenSSH récents (≥8.8) désactivent cet algorithme par défaut pour des raisons de sécurité, ce qui empêche l’authentification par clé publique sans intervention manuelle.
La solution de contournement:
Pour rétablir la compatibilité, il faut explicitement autoriser ssh-rsa côté client :
Host 192.168.8.1
PubkeyAcceptedAlgorithms +ssh-rsa
HostKeyAlgorithms +ssh-rsa
On considère que le routeur à l'IP 192.168.8.1 !
La solution sécurisée
Alternativement, il est recommandé d’utiliser une clé ED25519, plus moderne et compatible nativement avec Dropbear (si compilé avec le support). Cela évite les contournements et renforce la sécurité.
# 1. Générer la paire de clés
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "jean@client"
# 2. Vérifier les permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
# 3. Copier la clé publique sur le routeur
scp ~/.ssh/id_ed25519.pub root@192.168.8.1:/etc/dropbear/authorized_keys
# 4. Tester la connexion
ssh -i ~/.ssh/id_ed25519 root@192.168.8.1
Configuration de la clé SSH (authentification sans mot de passe)
L'activation du login ssh depuis l'extérieur conseille ou impose (selon les modèles) d'utiliser un login par échange de clés.
Chercher la clé côté client
Sur votre machine locale :
cat $HOME/.ssh/id_rsa.pub
Envoyer la sur le serveur.
Ajout de la clé publique sur le routeur
Se connecter en SSH :
ssh root@192.168.8.1
Puis ajouter la clé :
mkdir -p /etc/dropbear # Moi je l'ai toujours vu sur mes installations par défaut
cat >> /etc/dropbear/authorized_keys # ici on colle la clé
Désactivation de l’authentification par mot de passe (optionnel mais recommandé)
uci set dropbear.@dropbear[0].PasswordAuth='off'
uci commit dropbear
/etc/init.d/dropbear restart
Activation de l’accès SSH depuis le WAN
Par défaut, le routeur bloque les connexions SSH entrantes sur l’interface WAN. Pour les autoriser :
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-SSH-WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='22'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
/etc/init.d/firewall restart
Remarque : il est fortement recommandé de n’autoriser que les connexions par clé SSH si le port 22 est exposé sur le WAN.
Notes complémentaires
- Le fichier de clés SSH sur GL.iNet est
/etc/dropbear/authorized_keys, et non/root/.ssh/authorized_keys. - En cas d’erreurs iptables ou ipset après le redémarrage du pare-feu, elles peuvent être ignorées si les services essentiels (SSH, Wi-Fi) fonctionnent correctement.