Tmate hilft beim Notfalleinsatz per Shell

Aus LinuxUser 02/2019

Tmate hilft beim Notfalleinsatz per Shell

© Tawhy, 123RF

Über die Schulter geschaut

Mit dem Tool Tmate greifen Sie auf die Shell-Sitzung eines entfernten Rechners zu – selbst durch einen Router hindurch.

Welcher Linux-Anwender kennt das nicht: Eltern oder eine Person aus dem Freundeskreis werfen eine nicht mehr zu bändigende Windows-Installation über Bord, an deren Stelle tritt ein einfach zu bedienendes Linux. Für den Support aus der Ferne gibt es Teamviewer oder Anydesk, was bei Problemen eine Hilfestellung ohne Reise ermöglicht.

Das geht so lange gut, bis bei einem zu betreuenden Rechner die grafische Oberfläche zerschossen ist: Dann helfen die ansonsten nützlichen Remote-Tools nicht mehr weiter, denn Sie haben keinen Zugriff auf Ebenen, auf denen kein X-Server läuft.

Hier kommt Tmate [1] ins Spiel. Der Name steht für das englische “team mate”. Der Fork des beliebten Terminal-Multiplexers Tmux [2] bringt im Vergleich zum Original deutlich mehr Funktionen mit. Tmux gleicht dabei funktionell in gewisser Weise Screen [3]: Es ermöglicht, innerhalb eines Terminals oder dessen Emulation verschiedene virtuelle Sitzungen zu erzeugen und zu verwalten. Wie bei Screen dürfen Sie Sitzungen abtrennen und später weiterführen.

Selbst gehostet

Tmate eignet sich aber nicht nur für die Hilfe von außen, sondern erlaubt es etwa Entwicklern, gemeinsam an Software zu arbeiten. Technisch betrachtet stellt das Tool per Secure Shell (SSH) eine sichere Verbindung zum Server tmate.io her, der unter der Kontrolle der Tmate-Entwickler steht.

Alternativ betreiben Sie Tmate auf einem eigenen Server. Dabei hält sich der Ressourcenbedarf in so engen Grenzen, dass ein aktueller Raspberry Pi oder ein ähnlich ausgestatteter Einplatinen-Rechner dazu ausreicht. Der Rechner generiert lediglich eine SSH-ID und einige URLs für verschiedene Arten von Sitzungen – solche per SSH oder Web-Sessions im Nur-Lese-Modus oder mit vollem Zugriff.

Die Installation von Tmate gestaltet sich unaufwendig, da das Programm sich in den Paketquellen aller gängigen Distributionen findet. Bei Arch Linux bemühen Sie das Anwenderarchiv AUR, bei Debian und dessen Derivaten inklusive Ubuntu genügt ein sudo apt install tmate. Unter Fedora klappt es mit sudo dnf install tmate.

Schlüssel schmieden

Nach der Installation, die nur wenige KByte belegt, erzeugen Sie (falls nicht bereits vorhanden) ein Schlüsselpaar für SSH. Das gelingt per ssh-keygen -t rsa -b 4096 (Abbildung 1). Dabei beantworten Sie die einzelnen Schritte jeweils durch einen Druck auf die Eingabetaste. Sie dürfen für den Schlüssel ein Passwort vergeben, in diesem Fall ist das aber für den Hausgebrauch nicht notwendig.

Abbildung 1: Ein SSH-Schlüsselpaar ist schnell erstellt. Anders als beim üblichen Einsatz verbleibt der öffentliche Key auf dem Rechner. Über die Software tauschen die Rechner beim Start lediglich zufällig erstellte IDs oder URLs aus.

Abbildung 1: Ein SSH-Schlüsselpaar ist schnell erstellt. Anders als beim üblichen Einsatz verbleibt der öffentliche Key auf dem Rechner. Über die Software tauschen die Rechner beim Start lediglich zufällig erstellte IDs oder URLs aus.

Als kryptografisches Verfahren dient RSA mit einer Schlüssellänge von sicheren 4096 Bit. Standardmäßig liegen die Schlüssel im versteckten Verzeichnis .ssh/ im Home-Verzeichnis, sodass Tmate sie automatisch findet, wenn Sie das Tool einsetzen. Sie müssen auf jedem beteiligten Rechner diese Schlüssel generieren, falls dort nicht sowieso schon ein solches Paar vorliegt.

Stellen Sie eine Verbindung her, erzeugt das Programm ein Session-Token mit 150 Bit. Dann startet es einen Tmux-Server in einer Sandbox ohne Dateisystem und Benutzerrechte, aber mit eigenem Namensraum, um den Server von anderen Prozessen zu isolieren. Um dies zu ermöglichen, öffnet die Software alle Dateien, die sie zum Ausführen des Tmux-Servers benötigt, bevor sie in der Sandbox landen.

Diese Maßnahmen dienen dazu, das Ausnutzen möglicher Exploits gegen den Tmux-Server zu begrenzen. Ein Angreifer wäre so nicht in der Lage, auf andere Sitzungen zuzugreifen. Die technischen Grundlagen erläutert detailliert ein zehnseitiges Papier [4].

SSH-ID oder URL

Nachdem Sie Tmate dann als User erstmals gestartet haben, zeigt eine Leiste am unteren Rand des Terminalfensters eine zufällig erstellte SSH-ID für den Aufbau einer SSH-Sitzung im Read/Write-Modus (Abbildung 2). Am besten kopieren Sie diese Zeile in die Zwischenablage, denn sie verschwindet nach kurzer Zeit.

Abbildung 2: Nach dem Start der Anwendung zeigt diese am unteren Rand des Terminals eine zufällig erstellte SSH-ID.

Abbildung 2: Nach dem Start der Anwendung zeigt diese am unteren Rand des Terminals eine zufällig erstellte SSH-ID.

Haben Sie nicht schnell genug reagiert, holen Sie sich die Daten inklusive der weiteren IDs beziehungsweise URLs mit dem Befehl tmate show-messages wieder auf den Schirm. Dieser Befehl dient darüber hinaus zum Protokollieren während einer Sitzung (Abbildung 3).

Abbildung 3: Mit dem Befehl <code>tmate show-messages</code> zeigt das Programm die (nur f&uuml;r diese Sitzung g&uuml;ltigen) SSH-IDs und URLs sowie die Logs der laufenden Anwendung an.

Abbildung 3: Mit dem Befehl tmate show-messages zeigt das Programm die (nur für diese Sitzung gültigen) SSH-IDs und URLs sowie die Logs der laufenden Anwendung an.

Während die beim Start von Tmate angezeigte SSH-ID eine Sitzung mit Schreib- und Leserechten in einem Terminal erstellt, zeigt tmate show-messages zusätzlich eine ID für eine Terminal-Sitzung, die nur lesenden Zugriff erlaubt. Zudem liefert das Programm zwei URLs, die dasselbe Vorgehen im Browser ermöglichen (Abbildung 4).

Abbildung 4: Tmate funktioniert nicht nur im Terminal, sondern auch im Webbrowser. Das gilt auch dann, wenn Sie Tmate selbst hosten.

Abbildung 4: Tmate funktioniert nicht nur im Terminal, sondern auch im Webbrowser. Das gilt auch dann, wenn Sie Tmate selbst hosten.

Schlüssel übermitteln

Nun müssen Sie nur noch den weiteren Teilnehmern der Sitzung die SSH-ID oder URL übermitteln. Dazu eignen sich am ehesten das Übertragen per Chat und Mail oder das Teilen über einen Dienst wie Nextcloud. Als letzte Möglichkeit sollte das fehleranfällige Durchgeben per Telefon in Betracht kommen.

Die eingeladenen Teilnehmer, denen Sie eine ID oder URL anvertrauen, müssen weder Tmate noch Tmux installieren. Sie brauchen weder die gleiche Distribution zu benutzen noch Linux überhaupt: Auch FreeBSD, OpenBSD, NetBSD sowie Mac OS X können als Grundlage dienen, lediglich Windows bleibt außen vor.

Gibt das Gegenüber nun die übermittelte SSH-ID/URL ein, zeigt das Terminal das, was der Hilfesuchende selbst im Terminal sieht. Befehle und deren Rückgaben laufen in Sekundenbruchteilen zwischen den Rechnern hin und her. Bei der Sitzung mit Lese- und Schreibrechten dürfen alle Parteien selbst Eingaben machen, bei der eingeschränkten Session darf nur der Host schreiben, die Teilnehmer bleiben auf das Lesen beschränkt.

Benötigen Sie das geteilte Terminal nicht mehr, ist es ratsam, die Sitzung durch die Eingabe von exit zu beenden. Schließen Sie einfach nur das Terminal, dann hat die Gegenseite weiterhin Zugriff auf den Rechner – ein potenzielles Sicherheitsrisiko.

Fazit und Ausblick

Wenn die grafische Oberfläche nicht mehr startet, fällt eine Hilfestellung per Remote-Session mit Tools wie Teamviewer oder Anydesk flach. Unter anderem bei solchen Gelegenheiten spielt Tmate seine Stärken aus und ermöglicht ohne großen Aufwand den Zugriff via Shell auf den entfernten Rechner.

Zusätzlich bietet Tmate alle Vorzüge von Tmux, erspart beim Teilen des Terminals jedoch das manuelle Aufsetzen einer SSH-Verbindung. Es eignet sich damit nicht nur zum Support entfernter Rechner, sondern beispielsweise auch zum Pair-Programming. Dabei schreibt ein Entwickler Code in ein Terminal, während ein Kollege zur Kontrolle mitliest. Diese Arbeitsweise deckt Fehler frühzeitig auf und sorgt für qualitativ guten Code.

Derzeit denken die Entwickler darüber nach, das Übertragen von Dateien nach dem Prinzip von SCP [5] zu ermöglichen. Bisher muss man dazu einen Dienst wie Transfer.sh [6] innerhalb von Tmate benutzen. Das Aufzeichnen der Sitzungen steht ebenfalls auf dem Plan der Entwickler. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 02/2019 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben