SSH-Tipps für den Alltag

Schlüsselwächter

SSH wird meist dazu verwendet, eine verschlüsselte Verbindung zur Shell auf einem entfernen Host aufzubauen, um diesen zu administrieren. SSH kann aber mehr, zum Beispiel Dateien übertragen, Ports weiterleiten oder gar ein echtes VPN aufsetzen.
Wer sein System permanent überwacht, hat den Grundstein dafür gelegt Engpässe zu vermeiden und Fehler frühzeitig zu erkennen. Neben dem Platzhirsch Nagios ... (mehr)

Das Kürzel SSH ("Secure Shell") steht im allgemeinen Sprachgebrauch sowohl für das so bezeichnete Netzwerkprotokoll, als auch für ein Paket von Tools, mit deren Hilfe sich der Admin über eine verschlüsselte Netzwerkverbindung auf einem entfernten Gerät einloggen kann. Mit "der SSH" deckt der Admin neben Remote Login eine ganze Reihe weiterer Remote-Anwendungen mit einem Tool ab, darunter auch Remote Execute, Remote Copy, Remote X11 Client sowie eine Reihe von Port-Forwarding-Szenarien.

Insgesamt kann SSH mit den im SSH-Paket enthaltenen Tools ssh, slogin, scp und sftp die klassischen Unix-Befehle zum Ausführen von Befehlen auf entfernten Hosts »rsh« , »rlogin« , »rcp« und »telnet« vollständig durch Varianten mit Verschlüsslung und Authentifizierung ersetzen.

Jedes dieser Kommandos führt eine Shell auf dem entfernten Host aus und erlaubt dem Benutzer das Aufrufen von Befehlen. Da jeder Client ein Benutzerkonto auf dem Host benötigt, auf dem er einen Befehl ausführen möchte, führen alle genannten Kommandos einen Authentifizierungsprozess durch.

Während die klassischen r-Varianten dabei lediglich Benutzernamen und Passwörter ohne Verschlüsslung austauschen, verwenden alle SSH-Befehle eine Public-Key-Cryptography-Infrastruktur. Ebenfalls zum SSH-Paket gehören die Tools/Kommandos »ssh-keygen« , »ssh-agent« und »ssh-add« zur Unterstützung von Authentifizierungsvorgängen. Die vollständige Syntax inklusive aller möglichen Optionen liefert das Eingeben von »ssh« ohne Parameter oder der Aufruf von »man ssh« .

SSH interaktiv

Hat der Admin eine SSH-Verbindung aufgebaut, im einfachsten Fall etwa mit

ssh -l Benutzer Remote-Host

gefolgt vom Nutzer-Passwort auf dem entfernten Host, leitet SSH sämtliche Tastatureingaben an den Remote-Host weiter. Weniger bekannt ist, dass sich über Escape-Sequenzen auch SSH selbst steuern lässt. Das Tilde-Zeichen zu Beginn einer neuen Zeile leitet bei SSH standardmäßig eine Escape-Sequenz ein; erst das folgende Zeichen kennzeichnet den Befehl: So zeigt »~#« sämtliche offenen SSH-Verbindungen, und »~« beendet die aktuelle Verbindung, was nützlich ist, wenn die Shell nicht mehr reagiert. Eine Liste aller möglichen Befehle liefert »~?« . Mithilfe der Option »-e« ist es möglich, SSH ein anderes Zeichen zum Einleiten einer Escape-Sequenz mitzugeben.

Wer selten mit Escape-Sequenzen arbeitet, mag vielleicht folgenden Hinweis nützlich finden: Je nach Tastatur-Layout kann es unter Umständen erforderlich sein, etwa unter Ubuntu, die Tastensequenz [AltGr] [+] zum Erzeugen der Tilde (~) zweimal hintereinander einzugeben, gefolgt vom gewünschten Befehlszeichen. Die in der folgenden Abbildung sichtbare Zeichenfolge »~?« wurde so nicht eingegeben. Wollte der Admin diese Zeichenfolge sichtbar eingeben, müsste er nach einmaligen Eingeben der Tilde-Sequenz [AltGr] [+] die Leertaste drücken, was dann keine Escape-Sequenz, sondern reiner Text ist.

Abbildung 1: SSH lässt sich auch über Escape-Sequenzen steuern.

Dateitransfer

SSH lässt sich mithilfe des Kommandos »scp« auch zum Übertragen von Dateien nutzen. Da viele Admins lieber das ungleich mächtigere »rsync« verwenden, gerät diese Möglichkeit mitunter in Vergessenheit, obwohl sie für die meisten Zwecke ausreicht. Die komplette Syntax liefert wie üblich »man scp« . Im einfachsten Fall genügt:

scp Datei1 User@Host:Datei2

oder in umgekehrter Richtung

scp User@Host:Datei1 Datei2

Ganze Verzeichnisbäume lassen sich rekursiv mit dem Schalter »-r« kopieren.

Noch eleganter ist das Einbinden des entfernten Dateisystems via SSH, was sich mit dem Tool »sshfs« bewerkstelligen lässt. Dank der durch SSH gewährleisteten Authentifizierung und Verschlüsselung der übertragenen Daten ist »sshfs« eine sehr komfortable Variante für sichere Datentransfers über das Internet. Sshfs erlaubt einem nicht privilegierten Benutzer, ein fernes Dateisystem via SSH einzubinden, setzt allerdings auf Client-Seite das FUSE-Module (Filesystem in Userspace, [2] ) voraus. Auf der Server-Seite dagegen braucht »sshfs« lediglich einen SSH-Server mit SFTP-Subsystem. Installiert der Admin auf Client-Seite das Paket »sshfs« , sorgt das Paketmanagement automatisch für die Installation von »fuse-utils« und »lib-fuse2« . Die Syntax von »sshfs« lautet im einfachsten Fall:

sshfs User@Host:Pfad Lokaler-Mountpoint[Optionen]
Abbildung 2: Die Abbildungen zeigen den Inhalt des gleichen Verzeichnisses
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023