So mancher Fan schwört Stein auf Bein, dass ein Linux-System nie kaputt geht. Ab und an passiert es aber doch: Nichts geht mehr. Um Freunden oder Bekannten dann über das Internet helfen zu können, gibt es Tmate.
Wer bei Freunden und Bekannten als Computerexperte bekannt ist, der kommt immer wieder in die Verlegenheit, bei Problemen einspringen zu müssen. Befindet man sich nicht vor Ort, genügen oft ein paar E-Mails oder ein Chat zum Beheben der Fehlerursache. Manchmal braucht es jedoch auch eine Verbindung über eine Fernwartungssoftware wie etwa Teamviewer, sodass man direkt das Geschehen auf dem Schirm des Gegenübers sieht. Sitzt der Fehler jedoch so tief im System, dass die grafische Umgebung nicht mehr startet, etwa nach einer missglückten Systemaktualisierung, scheidet Teamviewer als Hilfsmittel jedoch aus.
In so einem Fall steht man mit recht stumpfen Waffen da: Um weiterhelfen zu können, müsste man zuerst den X-Server oder die Paketverwaltung zum Laufen bekommen – doch die dafür notwendigen Kniffe überfordern viele Ein- und Umsteiger, selbst wenn man sie telefonisch anleitet. Die beste Option böte ein Login über SSH, doch dazu müsste man eine Port-Weiterleitung vom Router zum Rechner einrichten und den OpenSSH-Server installieren. Mit einer defekten Paketverwaltung funktioniert auch das nicht, selbst wenn man die Hürde Port-Weiterleitung meistert.
Hilfe im Terminal
Als Lösung für dieses Dilemma bietet sich nun aber Tmate an [1]. Das Programm basiert auf dem Terminalmultiplexer Tmux [2], der funktional dem Kommando Screen ähnelt. Allerdings bringt Tmate eine Remote-SSH-Funktion mit, die sich ähnlich wie Teamviewer durch ein NAT-Netzwerk oder eine Firewall hindurchtunnelt.
Das Programm müssen Sie sowohl auf Ihrem Rechner installieren wie auch auf jenem des Hilfesuchenden. Unter Ubuntu spielen Sie es über eine PPA-Paketquelle ein (Listing 1), Anwender von Arch finden das Programm im Arch-User-Repository. Alternativ gibt es auch Builds für FreeBSD, Gentoo sowie Mac OS X (via Homebrew).
Listing 1
$ sudo add-apt-repository ppa:tmate.io/archive $ sudo apt update $ sudo apt install tmate
Funktioniert auf dem Zielrechner die Paketverwaltung nicht, scheitert freilich die Installation über die Paketquellen. Für diesen Fall bieten die Entwickler sogenannte Static Builds für 32- und 64-Bit-Systeme an. Die laden Sie als Tarball auf den betroffenen Rechner herunter, den Sie entpacken und anschließend das Tmate-Binary aufrufen (Listing 2). Die Builds funktionieren auf vielen Distributionen, es gibt sogar ein spezielles Binary für ARM-Systeme wie den Raspberry Pi. Es erscheinen regelmäßig neue Versionen des Programms, wir gehen hier vom bei Redaktionsschluss aktuellen Release 2.2.1 aus.
Listing 2
### Static Build von Tmate für 64-Bit Rechner herunterladen... $ wget https://github.com/tmate-io/tmate/releases/download/2.2.1/tmate-2.2.1-static-linux-amd64.tar.gz ### Static Build von Tmate für 32-Bit Rechner herunterladen... $ wget https://github.com/tmate-io/tmate/releases/download/2.2.1/tmate-2.2.1-static-linux-i386.tar.gz ### Tmate entpacken und starten (im Falle eines 64-Bit-Systems) $ tar xzf tmate* $ ./tmate-2.2.1-static-linux-amd64/tmate
Gilt es einen Einsteiger zu unterstützen, dann empfiehlt es sich, die Aktion ein wenig zu vereinfachen: Laden Sie das entsprechende Binary aus dem Netz, und verpacken Sie es ohne ein Unterverzeichnis in ein Archiv mit einem simpleren Dateinamen. Das legen Sie dann auf Ihrem eigenen Webspace ab und kommunizieren dem Hilfesuchenden das entsprechende Wget-Kommando mit einer Kurz-URL (nutzen Sie dabei einen URL-Abkürzer Ihrer Wahl). Diese Vorgehensweise erspart dem Hilfesuchenden viel Tipparbeit, und Sie vermeiden Fehler bei der “Installation” des Tmate-Clients.
SSH-Schlüssel erzeugen
Nach der Installation von Tmate auf dem Patienten-Rechner erhält dessen Anwender beim ersten Aufruf des Programms eventuell die Meldung [tmate] Reconnecting… (SSH keys not found. Run ‘ssh-keygen’ to create keys and try again.) auf den Schirm (Abbildung 1). Dann war auf dem Rechner bislang noch kein SSH-Server installiert, bei Linux-Einsteigern nichts Ungewöhnliches. Ubuntu beispielsweise richtet bei einer Desktop-Installation den OpenSSH-Server nicht von Haus aus ein.

Abbildung 1: Gibt es auf dem Patienten-PC noch keinen SSH-Server, muss man vor dem ersten Start noch die entsprechenden Crypto-Keys erstellen.
Im Falle des Fehlers könnte man nun den SSH-Server nachinstallieren – das muss aber gar nicht sein. Es genügt, das System anzuweisen, einmalig die SSH-Schlüssel zu erstellen. Weisen Sie also den Hilfesuchenden an, Tmate mit der Eingabe von exit zu beenden und anschließend das Kommando ssh-keygen einzutippen. Dazu benötigt er keine Root-Rechte und darf jede der anschließenden Fragen ganz simpel durch Drücken der Eingabetaste ohne weitere Eingaben abnicken (Abbildung 2). Am Ende landet er wieder auf einer Eingabeaufforderung.

Eingabe.” width=”300″ height=”179″ />
Abbildung 2: Sämtliche Fragen von Ssh-keygen beantwortet der Hilfesuchende ohne weitere Angaben mitEingabe.Tmate-Sitzung
Nun lassen Sie den Hilfesuchenden die erste “richtige” Tmate-Sitzung anstoßen. Beim Aufruf des Programms erscheint eine Zeile mit einem Ssh-Kommando der Art ssh sehr-sehr-lange-tmate-id@tmate-server unten in der Statuszeile des Anwendungsfensters. Hier gilt es, aufmerksam zu sein und die Adresse rechtzeitig zu sichern (Abbildung 3): Nach ein paar Sekunden verschwindet die Zeile, und man müsste Tmate beenden und wieder neu aufrufen, um eine neue ID zu erstellen. Hat es geklappt, bitten Sie den Hilfesuchenden, Ihnen den kompletten SSH-Befehl zukommen zu lassen.

Abbildung 3: Tmate entspricht quasi Teamviewer für die Konsole. Die Session-ID muss der Hilfesuchende dem Helfer mitteilen.
Das gelingt in der Regel am einfachsten, indem er die Adresse per Copy & Paste in eine E-Mail überträgt. Falls der X-Server beim Hilfesuchenden nicht funktioniert, fällt diese Option mangels verfügbarem grafischen Client meist aus. In diesem Fall lassen Sie Ihr Gegenüber das Fenster mit dem Tmate-Code per Handy abfotografieren und Ihnen das Bild per Mail oder Chat zuschicken. Zwar steht dann Abtippen an, doch das klappt meist fehlerfreier als das telefonische Durchgeben der Buchstaben- und Zahlenkette. Achten Sie dennoch sehr genau auf die einzelnen Zeichen, je nach Terminal-Font lassen sich “1”,”l” und “I” sowie “O” und “0” nur schwer unterscheiden.
Nach Eingabe des SSH-Kommandos landen Sie umgehend auf dem Rechner des Gegenübers, das Login erfordert kein Passwort. Im Terminalfenster sehen Sie, was auch der Hilfesuchende selbst in seinem Terminal sieht. Sollte das Terminalfenster auf Ihrem Rechner mehr Platz bieten, zeigt Tmate rund um den Inhalt des Gegenübers Punkte an (Abbildung 4). Da das System nur Text übertragen muss, funktioniert Tmate auch ohne Probleme über eine dünne Mobilfunkleitung.

Abbildung 4: Über die Tmate-Session-ID loggen Sie sich ohne Port Forwarding und SSH-Server auf dem entfernten Rechner ein.
Kommandos und deren Ausgaben wandern unmittelbar zwischen den über Tmate verbundenen Rechnern hin und her. Für Reparaturaktionen, die Root-Rechte erfordern, muss Ihnen der Hilfesuchende nicht zwingend das Root-Passwort oder sein Passwort für Sudo-Kommandos mitteilen: Er kann diese bei Bedarf selbst eintippen, ohne dass Sie als Helfender das Passwort mitbekommen. So müssen Sie keine unangenehmen Fragen nach dem Root-Passwort stellen, wenn Sie Ihr Gegenüber weniger gut kennen. Zudem kann der Hilfesuchende selbst jederzeit eingreifen und die Steuerung des Rechners übernehmen.
Problemfälle
Funktioniert der X-Server noch, bräuchte man Tmate eigentlich nicht zwingend – schließlich gäbe es mit Teamviewer ja eine grafische Alternative. Fährt der grafische Desktop allerdings nicht mehr hoch, schlägt die Stunde von Tmate. Nichtsdestotrotz muss man hier dem User noch ein wenig unter die Arme greifen, denn ganz so einfach gestaltet sich der Weg zu einem funktionierenden Terminal oft nicht. Bleibt das System etwa mit Fehlermeldungen während des Bootens hängen, müssen Sie in manchen Fällen auf den Recovery-Modus zurückgreifen (siehe Kasten “Wenn nichts funktioniert”).
Wenn nichts funktioniert
Es gibt Situationen, in denen ein Linux-System auf den ersten Blick komplett den Geist aufgibt und gar nicht mehr startet – etwa, wenn während eines Distributionsupgrades der Strom ausfällt oder die Paketverwaltung aufgrund von zusätzlichen Paketquellen aus dem Tritt kommt. Beim nächsten Start läuft dann eventuell der X-Server nicht mehr hoch, und es erscheinen nur noch Fehlermeldungen auf dem Schirm. Dann steht weder eine grafische Umgebung zur Verfügung, noch lassen sich Pakete installieren. Setzt der Hilfesuchende ein Ubuntu-Derivat ein, dann haben Sie mit dem Recovery-Modus jedoch ein mächtiges Werkzeug an der Hand.
In diesen Modus gelangt der Rechner, indem dessen Benutzer unmittelbar nach dem Einschalten einmal oder mehrmals [Esc] drückt. Daraufhin erscheint das Grub-Menü (Abbildung 5), von wo Sie über die Option Erweiterte Optionen für Ubuntu in ein weiteres Menü gelangen, in dem Sie die auf dem System installierten Kernel sehen. Der User wählt nun den obersten Eintrag mit dem Zusatz (recovery mode) zum Booten aus. Klappt das nicht, muss er den Rechner wohl oder übel durch längeres Drücken der An/Aus-Taste hart abschalten, neu starten und einen älteren Eintrag auswählen (der dann hoffentlich funktioniert).
Geht alles gut, landet der Benutzer in einem Wiederherstellungsmenü, wobei der Dateisystemstatus erst einmal auf Nur Lesen steht. Zudem baut das System im Recovery-Modus keine Netzwerkverbindung auf. Das lässt sich jedoch über network**/ Netzwerk aktivieren nachholen (Abbildung 6). Die Funktion schaltet die Netzwerkkarte ein, holt sich beim Router eine IP-Adresse und bindet die Laufwerke des Rechners mit Schreib- und Leserechten ein. Anschließend gelangen Sie dann über root**/ Zur root-Befehlszeile (Shell) wechseln in ein virtuelles Terminal. So einfach funktioniert das allerdings nur in einem kabelgebundenen Netzwerk. Den Rechner im Recovery Modus per WLAN ins Netz zu hängen, verursacht in der Regel deutlich mehr Aufwand.

Esc direkt nach dem Anschalten des Rechners in das Menü des Bootmanagers Grub.” width=”300″ height=”225″ />
Abbildung 5: Unter Ubuntu und dessen Derivaten gelangen Sie durch Drücken vonEsc direkt nach dem Anschalten des Rechners in das Menü des Bootmanagers Grub.
Abbildung 6: Aus der Root-Shell heraus lässt sich auch bei einem komplett zerschossenen System Tmate installieren und die Fernwartung starten.
Ausblick
Möchten Sie Kunden professionell per Tmate Hilfestellung anbieten, können Sie den dazu benötigten Server auch selbst hosten: Der entsprechende Code findet sich auf Github [4]. Hinweise zur Installation vermittelt die Homepage des Projekts ganz am Ende unter Host your own tmate server. Als Basis genügt schon ein kleiner Linux-Server im Netz – etwa ein Raspberry Pi, den Sie per DnyDNS aus dem Internet unter einer statischen Adresse erreichbar machen. Die Entwickler des Programms geben auf der Projektseite auch weiterführende Informationen dazu, wie Tmate genau funktioniert.
Infos
[1] Tmate: https://tmate.io
[2] Tmux: https://tmux.github.io
[3] Static Builds: https://github.com/tmate-io/tmate/releases
[4] Quellcode: https://github.com/tmate-io/tmate-slave





