choom: Terminal-Sharing à la tmate, aber schlank — und auf dem Weg zu E2E

tmate ist genial und gefährlich zugleich: ein voller tmux-Fork in ~50k Zeilen C, der auf dem Relay als root läuft. Vor einer Weile habe ich eine schlanke Python-Reimplementierung gebaut, die nur den Sharing-Kern behält. Jetzt habe ich sie nach Rust portiert — eine einzige statische ~4-MB-Binary, unprivilegiertes SSH-Relay, kompromisslos auf Sicherheit getrimmt. Was choom kann, wie man meinen öffentlichen Server choom.sh nutzt, warum „trust the operator" bauartbedingt gilt — und wie ein E2E-Client das aufbricht.

Es gibt diesen einen Moment beim Remote-Support, den jeder kennt: Jemand sitzt vor einem kaputten Terminal, beschreibt am Telefon umständlich, was auf dem Schirm steht, und tippt dann doch wieder das Falsche. Was ich in dem Moment will, ist keine 478-MB-Electron-Bildschirm-Sharing-Software — ich will sein Terminal sehen, am besten mitschreiben können, und zwar in dem Augenblick, in dem es brennt. Genau dafür gibt es tmate . tmate ist großartig. tmate ist aber auch ein Stück Software, dem ich nicht mehr blind vertrauen wollte. Dieser Beitrag erzählt, warum ich mir stattdessen mein eigenes Werkzeug gebaut habe — choom1 —, was es kann, wie man es benutzt, und wo seine ehrliche Grenze liegt.

Dateien mit Hilfe von zssh übertragen

zssh - ein Wrapper für SSH mit Unterstützung für ZMODEM

ZMODEM war ursprünglich ein proprietäres Dateitransfer-Protokoll der Firma Omen Technologies Inc. . Das 1986 von Chuck Forsberg entwickelte Protokoll ist nun weitestgehend freie Software. Die Linux Implementierung lrzsz basiert auf dem letzten, unter public domain veröffentlichten Release, von rzsz. Neben ZMODEM gibt es weitere Varianten des Protokolls, wie XMODEM, YMODEM, SEXYZ und SyncTERM.

Das lrzsz Paket besteht aus den Programmen: rb, rx, rz, sb, sx und sz. Manche werden zum Senden von Daten via X/Y/ZMODEM benötigt, andere zum Empfangen. Für uns sind an dieser Stelle nur sz und rz interessant.

Generell sind das Protokoll und die CLI-Tools heute weitestgehend obsolet geworden, da viele Dateitransferprotokolle das Fortsetzen von fehlerhaften Übertragungen unterstützen und dabei auch noch erheblich schneller sind. Aber für eine Sache möchte ich den ZMODEM-Dateitransfer nicht missen, denn die Verwendung spart mir einiges an Arbeit: