Keyway: mein SSH-Client im Browser — Terminal, VNC und Dateien ohne Desktop-Programm
Autor
Ueli Iff
Veröffentlicht
Lesezeit
4 Min.

MobaXterm, PuTTY, RealVNC Viewer: Wer Server, SPS und Gateways betreut, sammelt Desktop-Programme — und steht ohne sie da, sobald das Notebook nicht dabei ist. Genau das hat mich gestört. Also habe ich mir meinen eigenen SSH-Client gebaut: Keyway läuft als ein einziger Container auf eigener Hardware, und bedient wird er im Browser — am Rechner, am Tablet und auf dem Telefon. Ohne Cloud-Dienst, ohne Konto bei Dritten, Open Source unter MIT-Lizenz.
Der komplette Quellcode liegt auf GitHub: github.com/uiff/ssh-app — mit ausführlicher README auf Deutsch und Englisch.
Was Keyway kann
Terminal im Browser. Tabs, 256 Farben, Vollbildprogramme wie top oder vi, Kopieren und Einfügen. Das Beste daran: Sitzungen laufen bis zu 12 Stunden auf dem Server weiter. Nach einem Funkloch, einem Neuladen oder einem Gerätewechsel hängt sich die Sitzung von selbst wieder an — mit dem bisherigen Bildschirminhalt.
Bildschirm (VNC). Den Desktop eines Raspberry Pi, eines HMI-Panels oder eines PCs sehen und bedienen, als Tab neben den Terminals. Standardmässig tunnelt Keyway die VNC-Verbindung durch SSH: Im Netz muss kein VNC-Port offen sein, und das VNC-Passwort bleibt auf dem Server — der Browser bekommt nur das Bild.
Dateien per SFTP. Hoch- und Herunterladen per Ziehen und Ablegen, direkt neben dem Terminal. Auf Linux-Hosts folgt die Dateileiste sogar dem Terminal: Nach cd /var/log zeigt sie /var/log.
Gerätetypen statt Namenslisten. Jeder Host bekommt ein Symbol — SPS, HMI, Gateway, Wallbox, Wechselrichter, Server, Raspberry Pi, Firewall und mehr. Gerade im IoT- und OT-Alltag erkennst du deine Geräte so auf einen Blick.
Befehlshilfe offline. Rund 7000 Befehle aus den tldr-pages, eingebaut und ohne Internetverbindung nutzbar. Die Suche versteht Alltagssprache: «archiv entpacken» findet tar — und erklärt, was -xzf bedeutet, bevor du es abschickst.
Tresor. Passwörter und SSH-Schlüssel liegen verschlüsselt auf deinem Server (AES-256-GCM, Schlüsselableitung per Argon2id). Nach 30 Minuten ohne Bedienung sperrt sich die App von selbst. Ein Backup ist eine einzige verschlüsselte Datei — einspielbar auch auf einem neuen System.
Fürs Telefon gemacht. Eigene Tastenleiste mit Esc, Tab, Strg und Pfeilen, Gesten für den VNC-Bildschirm, und auf dem Startbildschirm abgelegt läuft Keyway wie eine App.
Die Vorteile auf einen Blick
Keine Desktop-Abhängigkeit. Jeder Browser ist dein Client — es gibt nichts zu installieren, auch nicht auf fremden oder gesperrten Rechnern.
Selbst gehostet. Ein Container auf deiner Hardware. Keine Cloud, kein Konto, keine Telemetrie — deine Zugangsdaten verlassen dein Netz nicht.
Ein Werkzeug statt drei. Terminal, VNC-Viewer und Dateiübertragung in einem Tab — statt MobaXterm, RealVNC und WinSCP nebeneinander.
Sitzungen überleben. Verbindungsabbrüche, Neuladen, Gerätewechsel — die Terminal-Sitzung läuft serverseitig weiter.
Sicher gebaut. Container ohne Shell, unprivilegierter Benutzer, nur lesbares Dateisystem, Anmeldesperre nach Fehlversuchen, Host-Schlüssel-Prüfung wie bei OpenSSH.
Läuft auch auf dem Pi. Images für amd64 und arm64 — ein Raspberry Pi im Schaltschrank reicht als Zuhause.
Zweisprachig und offen. Oberfläche auf Deutsch und Englisch, Quellcode unter MIT-Lizenz auf GitHub.
Anleitung: in fünf Minuten startklar
Du brauchst nur einen Rechner im eigenen Netz mit Docker und Docker Compose — ein Server, eine VM oder ein Raspberry Pi.
1. Container bauen und starten. Drei Befehle, fertig:
1git clone https://github.com/uiff/ssh-app.git2cd ssh-app3docker compose up -d --build
2. Im Browser öffnen. https://<adresse-des-rechners>:8443 aufrufen. Keyway erzeugt beim ersten Start ein eigenes Zertifikat, der Browser warnt deshalb einmal — das ist erwartet. Den Fingerabdruck zum Vergleichen zeigt docker logs ssh-app.
3. Sofort einrichten. Benutzername und Passwort festlegen (mindestens 10 Zeichen). Die App zeigt danach einmal den Sicherheitsschlüssel an: kopieren und getrennt aufbewahren, zum Beispiel im Passwort-Manager. Mit ihm setzt du ein vergessenes Passwort zurück und spielst Backups ein — ohne ihn ist ein Backup nicht lesbar.
Wichtig: Solange die Ersteinrichtung nicht erledigt ist, kann jeder, der die Adresse erreicht, das Konto anlegen. Also: erst einrichten, dann den Port für andere freigeben. Und grundsätzlich gilt — Keyway ist für das eigene Netz gedacht, nicht für das offene Internet.
4. Ersten Host anlegen. Gerätetyp wählen, Adresse eintragen, verbinden. Das Adressfeld versteht auch benutzer@host:port oder ssh -p 2222 benutzer@host und füllt die Felder selbst aus.
Aktualisieren. Erst ein Backup herunterladen (Einstellungen, Backup), dann:
1git pull2docker compose up -d --build
Hosts, Zugänge und die Anmeldung bleiben dabei erhalten. Für den Betrieb hinter einem Reverse-Proxy (nginx, Caddy, Traefik) mit richtigem Zertifikat steht die Konfiguration in der README auf GitHub.
Ehrlich bleiben: die Grenzen
Keyway ist ein SSH-Gateway: Der Server baut die Verbindungen auf, eine Ende-zu-Ende-Verschlüsselung bis in den Browser ist bei diesem Prinzip nicht möglich — deshalb gehört die App auf vertrauenswürdige, eigene Hardware. Der VNC-Modus «Direkt» für Geräte ohne SSH (etwa manche HMI-Panels) ist unverschlüsselt und nur fürs vertrauenswürdige Netz gedacht; der empfohlene Weg über den SSH-Tunnel hat dieses Problem nicht.
Fazit
Seit Keyway läuft, ist mein SSH-Alltag geräteunabhängig: kurz vom Telefon auf das Gateway schauen, am Tablet ein Log prüfen, am Rechner die volle Arbeitsumgebung — immer dieselben Hosts, dieselben Zugänge, dieselben Sitzungen. Wenn dir das bekannt vorkommt: Der Code ist frei, probier Keyway aus und sag mir auf GitHub, was dir fehlt. Und falls du mit Docker noch nicht warm bist: Docker einfach erklärt im Wissens-Hub ist der sanfte Einstieg.
Hat dir dieser Beitrag geholfen?
Wie zeigt Keyway den Bildschirm eines Geräts an, ohne dass im Netz ein VNC-Port offen sein muss?

Eigene Dienste betreiben, ganz ohne YAML: der Stack Baukasten
Home Assistant, Nextcloud oder ein Werbeblocker im eigenen Netz, ohne eine Zeile YAML zu schreiben. Warum der Stack Baukasten Selfhosting auch für Einsteiger öffnet.

Ich habe mir J.A.R.V.I.S. selbst gebaut: ein eigener KI-Butler im Browser
Warum ich einen eigenen, selbst gehosteten KI-Assistenten gebaut habe, was er kann und was mir der Weg dorthin über das Arbeiten mit KI wirklich gebracht hat.

Virtuelle Maschinen vs. Docker — der Unterschied einfach erklärt
Virtuelle Maschinen oder Docker-Container? Architektur, Unterschiede (Grösse, Startzeit, Isolation) und wann sich was lohnt — verständlich mit Grafiken erklärt.
