Par quoi remplacer OpenSSH sur les appareils à faible consommation et les routeurs
Lorsque vous construisez une image minimaliste pour un microcontrôleur, un routeur ou un conteneur Docker, chaque mégaoctet de mémoire devient un luxe. OpenSSH complet fonctionne très bien sur les serveurs, mais pour les systèmes embarqués, c'est comme un camion qui se gare devant une petite boutique. Il traîne derrière lui une ribambelle de dépendances, et la RAM fond littéralement sous vos yeux.
Dans des situations comme celles-ci, les gens se tournent vers Dropbear. C'est un serveur et client SSH compact écrit par Matt Johnston. Le projet est apparu il y a plus de vingt ans, mais il est toujours activement maintenu et sert de norme par défaut dans OpenWrt et les firmwares des équipements réseau.
Ce qu'il y a dedans et comment les économies sont réalisées
Dropbear résout une tâche spécifique : économiser l'espace disque et la RAM tout en maintenant la sécurité de base du protocole SSH-2. Si vous compilez le projet avec les bons indicateurs, le binaire résultant ne pèse que quelques centaines de kilo-octets.
Le développeur a appliqué le concept d'un binaire unique multi-usage, similaire au fonctionnement de l'utilitaire BusyBox. Dans ce mode, un seul fichier gère les fonctions de serveur, client dbclient, générateur de clés dropbearkey et convertisseur dropbearconvert. Vous créez des liens symboliques avec les noms requis pointant vers un binaire unique, et le programme détermine son mode de fonctionnement en fonction du nom du fichier appelé.
Voici quelques autres astuces pour réduire la taille :
- Le client intégré
scpest compilé sans barre de progression de transfert de fichiers par défaut. Si vous avez besoin d'un indicateur, vous devrez passer explicitement le paramètreSCPPROGRESS=1lors de la compilation. - Dans le fichier
options.h, vous pouvez désactiver manuellement les algorithmes de chiffrement inutilisés, le transfert de port ou la prise en charge de l'authentification par mot de passe, réduisant davantage la taille finale du fichier.
Subtilités de la gestion des clés
Si vous êtes habitué aux outils standard d'OpenSSH, le projet vous réservera quelques surprises. Du côté serveur, tout est familier : le fichier ~/.ssh/authorized_keys fonctionne de manière standard. Vous y ajoutez des clés publiques au format ssh-rsa ou ssh-ed25519. L'essentiel est de vous assurer que votre éditeur ne divise pas la chaîne de clé sur plusieurs lignes, et que les permissions sur le répertoire .ssh permettent l'écriture uniquement pour le propriétaire.
Du côté client et lors de la génération des clés d'hôte, les particularités commencent. L'utilitaire utilise son propre format pour les clés privées. Pour utiliser votre clé familière ~/.ssh/id_rsa dans le client dbclient, vous devrez d'abord la convertir :
dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db user@remotehost
Si vous créez une nouvelle clé via l'utilitaire natif dropbearkey, les parties privée et publique sont affichées directement sur la console. Vous pouvez extraire la clé publique pour l'ajouter à un autre serveur avec un filtrage simple :
./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub
Démarrage du serveur et pièges
Habituellement, avant de démarrer le serveur SSH, vous devez générer manuellement les clés d'hôte :
./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key
Dropbear a une astuce pratique pour un démarrage rapide du système. Au lieu de générer des clés au démarrage (ce qui ralentit le démarrage sur les processeurs faibles), vous passez l'indicateur -R au serveur. Dans ce cas, les clés seront automatiquement créées dans le répertoire /etc/dropbear/ uniquement lors de la première connexion entrante.
En fonctionnement, gardez à l'esprit les particularités du projet :
- L'exécution du serveur en tant qu'utilisateur normal est fortement restreinte. Vous ne pourrez pas allouer un pseudo-terminal (pty), basculer vers un autre compte ou utiliser les mots de passe shadow.
- Les clés d'hôte chiffrées par mot de passe ne sont pas directement prises en charge, bien que le client puisse se connecter à un serveur
ssh-agenten cours d'exécution. - Le projet manque de documentation détaillée. Les principales instructions sont dispersées dans les fichiers texte
INSTALL.md,MULTI.mdetSMALL.mdà la racine du dépôt.
Qui trouvera cet outil utile
Dropbear sera utile si vous créez un firmware de routeur personnalisé, développez un appareil basé sur Linux avec une mémoire flash limitée ou construisez une image initramfs compacte. Sur un serveur complet avec des dizaines de gigaoctets de mémoire, vous remarquerez à peine la différence avec OpenSSH. Mais là où chaque kilo-octet compte, cet outil conserve les ressources mieux que la plupart des alternatives.
Projets similaires