Ich helfe ab und an anderen Linux-Usern Probleme mit ihrem System zu lösen. Üblicherweise genügen dafür ein paar Mails oder ein Chat, manchmal greife ich aber auch auf Teamviewer zurück und schaue direkt auf den betroffenen Rechner. Doch nicht immer gibt es diese Option. Das liegt in der Regel nicht am durchaus zuverlässig funktionierenden Teamviewer: Wenn ein Distributions-Upgrade auf die nächste Ubuntu-Version schief läuft und der Xserver nicht mehr startet, scheidet eben auch Teamviewer als Hilfsmittel aus.
In so einem Fall steht man mit Recht stumpfen Waffen da. Um weiter helfen zu können müsste man erstmal wieder die den Xserver oder die Paketverwaltung zum Laufen bekommen, doch damit sind Einsteiger üblicherweise überfordert — selbst wenn man sie telefonisch dazu anleitet. Die beste Option wäre ein Login über SSH, doch dazu müsste man den Openssh-Server installieren und eine Portweiterleitung vom Router zum Rechner einrichten. Mit einer defekten Paketverwaltung funktioniert auch dieses nicht, selbst wenn man die Hürde Portweiterleitung meistert.
Tmate, der Teamviewer für das Terminal
Als Lösung für dieses Dilemma bietet sich nun aber Tmate an. Das Programm basiert auf dem Terminalmultiplexer Tmux (ähnlich dem Kommando screen
), allerdings hat Tmat eine Remote-SSH-Funktion integriert, die sich ähnlich wie Teamviewer durch ein NAT-Netzwerk oder eine Firewall hindurchtunnelt. Das Programm müsst ihr sowohl auf dem Zielrechner wie auch eurem System installieren. Man erhält es unter Arch aus dem AUR, für Ubuntu-User gibt es ein PPA. Alternativ gibt es auch Builds für FreeBSD, Gentoo oder MacOS X via Homebrew.
Tmate auf dem Rechner des Helfenden installieren
### Installation von Tmate unter Arch Linux $ pacaur -S tmate ### Installation von Tmate unter Ubuntu $ sudo add-apt-repository ppa:tmate.io/archive $ sudo apt update $ sudo apt install tmate
Sollte auf dem Zielrechner die Paketverwaltung nicht funktionieren, von daher die Installation weiterer Pakete nicht möglich sein oder es kommt eine andere Distribution wie beispielsweise Fedora oder Debian zum Einsatz, dann kommt man mit dem PPA natürlich auch nicht weiter. Für diesen Fall gibt es von den Tmate-Entwicklern „Static Builds“ für 32- und 64-Bit Systeme. Diese muss man lediglich in Form eines TAR-GZ-Archivs auf dem betroffenen Rechner herunterladen, entpacken und anschließend das tmate
Binary aufrufen.
Tmate behelfsmäßig als statisches Binary laden
### 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 enpacken und starten (im Falle eines 64-Bit-Systems) $ tar xzf tmate* $ tmate-2.2.1-static-linux-amd64/tmate
Solltet ihr einem Einsteiger helfen wollen, dann würde ich empfehlen die Aktion ein wenig zu vereinfachen: Holt euch das Binary und packt es ein Unterverzeichnis in ein neues Archiv mit einem einfacheren Dateinamen. Legt dieses dann auf einem eigenen Webspace ab und kommuniziert dem Hilfesuchenden ein Wget-Kommando mit einer Kurz-URL (nutzt dafür einen URL Shortener eurer Wahl). Das erspart dem Hilfesuchenden viel Tipparbeit und verhindert Fehler. Im Beispiel belasse ich es jedoch bei den „original“ Dateinamen und Pfaden. Achtet darauf, dass es natürlich auch demnächst neue Versionen des Programms gibt.
Ist Tmate auf dem Patienten installiert, erhält der User eventuell beim ersten Aufruf des Programms die Meldung [tmate] Reconnecting... (SSH keys not found. Run 'ssh-keygen' to create keys and try again.)
auf dem Schirm. Dies passiert, wenn auf dem Rechner bislang noch kein SSH-Server installiert war… was bei einem Linux-Einsteiger oft der Fall ist. Ubuntu installiert beispielsweise den OpenSSH nicht von Haus aus als Server. Andere Distributionen liefern diesen jedoch oft automatisch mit aus.
In Falle des Fehlers könnte man nun den SSH-Server nachinstallieren, allerdings muss das gar nicht sein. Es genügt das System anzuweisen einmalig die SSH-Schlüssel erstellen zu lassen. Weist daher den Hilfesuchenden an, Tmate mit der Eingabe von exit
zu beenden und das Kommando ssh-keygen
einzutippen — es braucht dazu auch keine Root-Rechte. Jede der anschließenden Fragen kann ganz simpel mit [Eingabe] ohne weitere Eingaben abgenickt werden. Am Ende landet der user wieder auf einer Eingabeaufforderung.
Nun könnt ihr die eigentliche Tmate-Sitzung starten: Beim Aufruf des Programms erscheint eine Zeile in der Art ssh sehr-sehr-lange-tmate-id@tmate-server
unten in der Statuszeile des Anwendungsfensters — An dieser Stelle gilt es ein wenig Aufmerksam zu sein und die Adresse rechtzeitig zu sichern. Nach ein paar Sekunden verschwindet diese Zeile und man muss Tmate mit exit
einmal beenden und wieder neu aufrufen, um eine neue ID zu erstellen. hat es geklappt, muss euch der Hilfesuchende den kompletten SSH-Befehl auf irgendeine Art und Weise zukommen lassen. Am leichtesten fällt in der Regel die Adresse per Copy&Paste in eine E-Mail zu übertragen.
Sollte der Xserver hingegen nicht funktionieren, sodass ich nicht mit dem Hilfesuchenden vom Rechner aus per Chat oder E-Mail kommunizieren kann, behelfe ich mir hier meist mit der Bitte einfach das Fenster mit einem Smartphone abzufotografieren und mir den „Screenshot“ per Mail oder Chat zu schicken. In diesem Fall muss ich den doch recht länglichen Code zwar abtippen, ich vermeide jedoch Buchstaben oder Zahlendreher beim telefonischen durchgeben der Tmate-ID — Achtet dennoch drauf, dass gar nicht so einfach ist, den Unterschied zwischen „1“,“l“ und „I“ oder „O“ und „0“ zu erkennen.
Habt ihr das SSH-Kommando richtig eingegeben, landet ihr umgehend auf dem Rechner eures Gegenübers. Ein Passwort zum Login muss nicht eingeben werden. Das Terminalfenster stellt das dar, was der Hilfesuchende selbst in seinem Terminal (oder dem virtuellen Terminal, falls der Xserver nicht funktioniert) sieht — sollte euer Terminalfenster mehr Platz bieten, zeigt Tmate rund um den Inhalt des Gegenübers Punkte an. Da nur Text übertragen werden muss, funktioniert Tmate auch ohne Probleme über eine dünne Mobilfunkleitung.
Kommandos und deren Ausgaben werden unmittelbar übertragen. Für Reparaturaktionen, die Root-Rechte erfordern, muss euch der Hilfesuchende nicht zwingend das Root-Passwort oder sein Passwort für Sudo-Kommandos mitteilen, er kann bei Bedarf einfach selbst das Passwort eingeben. So muss man keine unangenehmen Fragen nach dem Root-Passwort stellen, wenn man sein Gegenüber weniger gut kennt. Zudem kann der Hilfesuchende selbst jederzeit eingreifen.
Wenn der Xserver wie hier im Beispiel im gezeigten Beispiel noch funktioniert, bräuchte man Tmate eigentlich nicht zwingend — schließlich gäbe es mit Teamviewer ja eine grafische Option, die ebenso zuverlässig funktioniert. Fährt die grafische Desktopumgebung allerdings nicht mehr hoch, kommt die Stunde von Tmate. Nicht desto trotz muss man den User dennoch ein wenig unter die Arme greifen, ganz so einfach ist der Weg zu einer Remote-SSH-Session via Tmate nämlich auch nicht. Ubuntu bietet hier mit dem Recovery-Modus jedoch ein gutes Werkzeug.
Der Recovery-Modus von Ubuntu als letztes Hilfsmittel
In meinem letzten Fall lief auf dem Ubuntu-Rechner einer in der Schweiz ansässigen Bekannten beim Update von Ubuntu 14.04 auf 16.04 etwas schief. Das Ergebnis: Beim nächsten Start lief der Xserver nicht mehr hoch und die Paketverwaltung war komplett aus dem Tritt; es ließen sich keine Pakete mehr installieren. Setzt der Hilfesuchende ein Ubuntu-System (alternativ Linux Mint, oder ein anderes Ubuntu-Derivat) ein, dann habt ihr mit dem Recovery Modus ein mächtiges Werkzeug an der Hand.
In diesen gelangt der User, indem er kurz nach dem Einschalten des Ubuntu-Rechners die Escape-Taste drückt (ruhig mehrmals, unmittelbar nach Einschalten des Computers). Es sollte das Grub-Menü erscheinen, in dem man über die Option Erweiterte Optionen für Ubuntu in ein weiteres Menü gelangt, in dem man die auf dem System installierten Kernel sieht. Der User soll den obersten Eintrag mit dem Zusatz (recovery mode) auswählen. Funktioniert dieser nicht, dann soll er den Rechner hart abschalten, neu starten und einen älteren Eintrag auswählen, der (hoffentlich) funktioniert.
Am Ende landet man in einem Wiederherstellungsmenü, wobei der „Dateisystemstatus“ erstmal auf „Nur Lesen“ steht. Zudem baut das System im Recovery Modus keine Netzwerkverbindung auf — Beides lässt sich mit der Option network / Netzwerk aktivieren korrigieren. Die Funktion schaltet die Netzwerkkarte ein, holt sich eine IP vom Router und bindet die Laufwerke des Rechners mit Schreib- und Leserechten ein. Beachtet, dass dies lediglich über kabelgebundenes Netzwerk so einfach funktioniert. Den Rechner im Recovery Modus per WLAN ins Netz zu hängen, verursacht in der Regel deutlich mehr Aufwand, als kurzzeitig ein Kabel zu ziehen oder den Rechner in die Nähe des Routers zu tragen, sodass man ihn direkt dort anstecken kann.
Wer „professionell“ seinen Kunden per Tmate Support anbieten möchte, kann den benötigten Server auch selbst hosten. Den entsprechenden Code gibt es auf Github, Hinweise zur Installation findet ihr auf der Homepage des Projekts (ganz am Ende) unter „Host your own tmate server“. Man braucht am Ende „nur“ einen kleinen Linux-Server im Netz. Für einfache Zwecke genügt wahrscheinlich schon ein Raspberry Pi, den man per DnyDNS aus dem Internet unter einer statischen Adresse erreichbar macht. Weiter untem auf der Homepage gibt es auch weiterführende Informationen wie Tmate eigentlich funktioniert.
Geht aber quasi auch direkt mit tmux + ssh. Remote:
tmux new -s foo
, lokal:ssh localhost -t "tmux att -t foo"
. Der Schlüsselaustausch ist natürlich nicht so schön.Ich meine das „tunneln“ ist das besondere dabei. Daher auch der extra Dämon, der außerhalb läuft 😉
Praktischer Tipp! Super, vielen Dank. Kann ich immer wieder gut gebrauchen!
Gut zu wissen dass es sowas gibt.
P.S. In der zweiten Zeile von „Tmate behelfsmäßig als statisches Binary laden“ fehlt ein „wget“
Danke für den Hinweis, ist korrigiert. Christoph