Womit OpenSSH auf stromsparenden Geräten und Routern ersetzen
Wenn Sie ein minimalistisches Image für einen Mikrocontroller, Router oder Docker-Container erstellen, wird jedes Megabyte Speicher zum Luxus. Vollwertiges OpenSSH funktioniert großartig auf Servern, aber für eingebettete Systeme sieht es aus wie ein Lastwagen, der vor einem Tante-Emma-Laden vorfährt. Es schleppt eine Reihe von Abhängigkeiten mit sich, und der RAM schmilzt buchstäblich vor Ihren Augen dahin.
In solchen Situationen greifen viele zu Dropbear. Es ist ein kompakter SSH-Server und -Client, geschrieben von Matt Johnston. Das Projekt erschien vor über zwanzig Jahren, wird aber noch immer aktiv gepflegt und dient als Standard in OpenWrt und Netzwerkgeräte-Firmware.
Was steckt dahinter und wie wird die Einsparung erreicht
Dropbear löst eine ganz bestimmte Aufgabe: Speicherplatz und RAM einsparen und dabei die grundlegende Sicherheit des SSH-2-Protokolls beibehalten. Wenn Sie das Projekt mit den richtigen Flags kompilieren, nimmt die resultierende Binärdatei nur wenige hundert Kilobyte ein.
Der Entwickler wandte das Konzept einer einzelnen, vielseitigen Binärdatei an, ähnlich wie das BusyBox-Dienstprogramm funktioniert. In diesem Modus übernimmt eine Datei die Funktionen des Servers, des Clients dbclient, des Schlüsselgenerators dropbearkey und des Konverters dropbearconvert. Sie erstellen symbolische Verknüpfungen mit den erforderlichen Namen, die auf eine Binärdatei zeigen, und das Programm bestimmt seinen Betriebsmodus basierend auf dem Namen der aufgerufenen Datei.
Hier sind noch ein paar weitere Tricks zur Größenreduzierung:
- Der eingebaute Client
scpwird standardmäßig ohne Fortschrittsbalken für die Dateiübertragung kompiliert. Wenn Sie einen Indikator benötigen, müssen Sie während der Kompilierung explizit den ParameterSCPPROGRESS=1übergeben. - In der Datei
options.hkönnen Sie nicht verwendete Verschlüsselungsalgorithmen, Portweiterleitungen oder die Unterstützung der Passwort-Authentifizierung manuell deaktivieren, was die endgültige Dateigröße weiter reduziert.
Feinheiten bei der Schlüsselverwaltung
Wenn Sie an die Standard-OpenSSH-Werkzeuge gewöhnt sind, wird Sie dieses Projekt mit einigen Überraschungen konfrontieren. Auf der Serverseite ist alles vertraut: Die Datei ~/.ssh/authorized_keys funktioniert auf die übliche Weise. Dort fügen Sie öffentliche Schlüssel im Format ssh-rsa oder ssh-ed25519 hinzu. Das Wichtigste ist, dass Ihr Editor den Schlüsselstring nicht über mehrere Zeilen aufteilt und dass die Berechtigungen für das Verzeichnis .ssh nur dem Eigentümer Schreibzugriff erlauben.
Auf der Clientseite und bei der Generierung von Host-Schlüsseln beginnen die Besonderheiten. Das Dienstprogramm verwendet sein eigenes Format für private Schlüssel. Um Ihren vertrauten Schlüssel ~/.ssh/id_rsa im Client dbclient zu verwenden, müssen Sie ihn zuerst konvertieren:
dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db user@remotehost
Wenn Sie einen neuen Schlüssel durch das native Dienstprogramm dropbearkey erstellen, werden der private und der öffentliche Teil direkt auf der Konsole ausgegeben. Sie können den öffentlichen Schlüssel zum Hinzufügen auf einem anderen Server mit einfacher Filterung extrahieren:
./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub
Server starten und Fallstricke
In der Regel müssen Sie vor dem Start des SSH-Servers die Host-Schlüssel manuell generieren:
./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key
Dropbear hat einen praktischen Trick für einen schnellen Systemstart. Anstatt die Schlüssel beim Hochfahren zu generieren (was den Boot auf schwachen Prozessoren verlangsamt), übergeben Sie dem Server das Flag -R. In diesem Fall werden die Schlüssel automatisch im Verzeichnis /etc/dropbear/ erst bei der ersten eingehenden Verbindung erstellt.
Beachten Sie bei der Arbeit die Besonderheiten des Projekts:
- Der Serverbetrieb als normaler Benutzer ist stark eingeschränkt. Sie können keine Pseudo-Terminals (pty) zuweisen, zu einem anderen Konto wechseln oder Shadow-Passwörter verwenden.
- Passwortverschlüsselte Host-Schlüssel werden nicht direkt unterstützt, obwohl der Client eine Verbindung zu einem laufenden
ssh-agentherstellen kann. - Das Projekt verfügt über keine detaillierte Dokumentation. Die Hauptanweisungen sind über die Textdateien
INSTALL.md,MULTI.mdundSMALL.mdim Repository-Stammverzeichnis verstreut.
Wem dieses Werkzeug nützlich sein wird
Dropbear ist praktisch, wenn Sie benutzerdefinierte Router-Firmware erstellen, ein Linux-basiertes Gerät mit begrenztem Flash-Speicher entwickeln oder ein kompaktes Initramfs-Image erstellen. Auf einem vollständigen Server mit Dutzenden von Gigabyte Speicher werden Sie kaum einen Unterschied zu OpenSSH bemerken. Aber dort, wo jedes Kilobyte zählt, spart dieses Werkzeug Ressourcen besser als die meisten Alternativen.
Ähnliche Projekte