Aufmacher

Aber sicher!

SSH, SCP und SFTP

01.03.2008
Sicheres Arbeiten auf entfernten Rechnern und verschlüsselte Datenübertragung – das alles und noch viel mehr bietet SSH.

Die Abkürzung SSH steht für "Secure Shell" und bezeichnet sowohl das Protokoll als auch das Programm selbst. Auf vielen Plattformen, darunter auch Linux, bietet die vom OpenBSD-Projekt entwickelte Programmsammlung OpenSSH [1] alles, was Sie für die verschlüsselten Verbindungen benötigen: Kommandozeilentools zum Arbeiten auf entfernten Rechnern, die Möglichkeit, Programme remote auszuführen (auch grafisch, mittels X11-Weiterleitung), andere Internetdienste über SSH zu "tunneln" (und damit gegen Lauschangriffe abzusichern), Tools zum sicheren Kopieren von Daten und vieles mehr. Die Tabelle "OpenSSH-Suite" zeigt eine Übersicht der wichtigen Anwendungen.

Die Installation gestaltet sich unproblematisch, denn OpenSSH zählt zu den festen Bestandteilen jeder aktueller Linux-Distribution. Die meisten Systeme bieten für den Client und den Server zwei verschiedene Pakete an. Während der Client meistens vorinstalliert ist, müssen Sie den Server oft nachträglich einrichten, falls Sie von anderen Rechnern aus auf Ihren Linux-Computer per SSH zugreifen möchten. Eine Suche im Paketmanager nach openssh hilft in der Regel weiter.

Das grundlegende Arbeiten mit ssh und scp sowie das Erstellen von SSH-Schlüsseln und erste Schritte mit dem SSH-Agenten zeigt ein älterer Artikel [2]. Diese Folge geht einen Schritt weiter und verrät, was es mit Hostkeys auf sich hat und wie Sie den Fingerabdruck dieser Schlüssel prüfen, wie Sie private Schlüssel mit dem SSH-Agent (auch zeitlich begrenzt) verwalten, wie Sie mit dem eingebauten SOCKS-Proxy SSH-Verbindungen tunneln und wie Sie mit Secure FTP interaktiv Daten übertragen.

OpenSSH-Suite

Programm Funktion
ssh Der Kommandozeilenclient ssh baut verschlüsselte Verbindungen zu entfernten Rechnern auf und führt auf Wunsch auch direkt Befehle aus.
scp Mit scp ("secure copy") kopieren Sie Dateien (nicht-interaktiv) lokal, zu oder von entfernten Rechnern.
sftp Der FTP-Client ("secure FTP") ermöglicht interaktive Kopieraktionen: Wie bei anderen Kommandozeilen-FTP-Clients stehen neben Kopierfunktionen zahlreiche weitere Möglichkeiten zur Verfügung, wie Verzeichniswechsel und -listings, Änderung von Zugriffsrechten, Löschen von Verzeichnissen oder Dateien und vieles mehr.
sshd Der SSH-Server sshd ist als Daemon implementiert und lauscht standardmäßig auf Port 22. Die SSH-Clients bauen Verbindungen mit dem sshd auf.
ssh-keygen Das Tool erstellt und konvertiert SSH-Schlüssel.
ssh-keysign Hilfsprogramm, das bei der Host-basierten Authentifizierung zum Einsatz kommt.
ssh-keyscan Mit dieser Anwendung zeigen Sie öffentliche Hostkeys an und hängen sie an die Datei ~/.ssh/known_hosts an.
ssh-agent Der SSH-Agent verwaltet private SSH-Schlüssel und vereinfacht den Umgang mit Passwörtern.
ssh-add Das Tool macht den ssh-agent mit neuen Schlüsseln bekannt.

Ein Schlüsselerlebnis: Der Hostkey

Beim Erstkontakt verrät die Gegenseite den Fingerabdruck ihres öffentlichen Hostkeys (Abbildung 1). Die Warnung, dass die Authentizität des Rechners nicht gesichert sei, müssen Sie explizit durch Eingabe von yes bestätigen. Erst danach geht's weiter, und die Gegenstelle fordert das Passwort an.

Abbildung 1: Kontaktaufnahme: Der entfernte Rechner identifiziert sich mit seinem Hostkey bei der ersten Anmeldung.

Die Hostkeys des fremden Systems landen in der Datei ~/.ssh/known_hosts. Sobald Sie sich erneut auf dem Rechner einloggen, prüft SSH, ob der Schlüssel noch stimmt, und verweigert die Zusammenarbeit, wenn das nicht der Fall ist: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!. In einem solchen Fall kann es sich um böswillige Absicht und einen so genannten Man-in-the-middle-Angriff handeln; ein nicht mehr passender Hostkey hat aber oft ganz harmlose Gründe: Der Administrator hat den Schlüssel geändert oder das System neu installiert. Sind Sie sich sicher, dass das der Fall ist, greifen Sie zum Texteditor, öffnen die Datei ~/.ssh/known_hosts und löschen den entsprechenden Eintrag.

Im Verzeichnis /etc/ssh finden Sie sowohl den privaten als auch den öffentlichen Hostkey. Hat ein Administrator den Fingerabdruck des öffentlichen Schlüssels (/etc/ssh/ssh_host_rsa_key.pub) vorher bekannt gemacht, können Sie ihn beim Erstkontakt vor dem Akzeptieren überprüfen. Bei der Bestimmung des Fingerabdrucks hilft das Tool ssh-keygen. Mit der Option -l zeigen Sie den Fingerabdruck eines öffentlichen Schlüssels an, den Sie auf Anforderung angeben. Möchte der Administrator des Rechners macnugget, auf dem sich petronella von samesame aus einloggen möchte (Abbildung 1), den Fingerabdruck des Hostkeys herausfinden, geht er so vor, wie in Listing 1.

Listing 1
# ssh-keygen -l
Enter file in which the key is (/root/.ssh/id_rsa): /etc/ssh/ssh_host_rsa_key
2048 a0:0a:aa:3b:d3:08:f1:90:45:4f:48:c9:f6:cb:92:37 /etc/ssh/ssh_host_rsa_key.pub

Agent X is watching you

Der Artikel unter [2] beschreibt ausführlich, wie Sie einen SSH-Schlüssel anlegen und damit unter anderem eine Authentifizierung ohne Passworteingabe ermöglichen. Die gesparte Tipparbeit erkaufen Sie aber unter Umständen teuer: Der lokale, private Schlüssel bleibt ungesichert und öffnet einem Angreifer Tür und Tor, falls er in die falschen Hände gerät. Einen gesunden Mittelweg beschreitet das Programm ssh-agent: Es übernimmt die Verwaltung privater Schlüssel. So müssen Sie das Kennwort nur noch einmal pro Schlüssel zu Beginn einer ssh-agent-Sitzung eingeben.

Der Agent ist vielseitig: Er verrichtet entweder als Daemon im Hintergrund seine Arbeit oder lässt sich gezielt zum Aufruf einzelner Programme verwenden. Als zusätzliches Sicherheitsfeature lässt sich für den ssh-agent in beiden Anwendungsfällen mit der Option -t ein Timer einschalten. Nach dem Ablauf einer so festgelegten Zeitspanne "vergisst" der Agent die gespeicherten Schlüsselkennwörter. Hinter dem Parameter -t geben Sie die Lebensdauer der Passwörter an. ssh-agent versteht die verschiedensten Einheiten: Keine Angabe oder s bedeutet Sekunden, m Minuten, h Stunden, d Tage und w Wochen.

Um den Agenten als unabhängigen Daemon zu starten und ihn so zu konfigurieren, dass er neu hinzugefügte Schlüssel jeweils nach zwei Tagen vergisst, lautet der Aufruf beispielsweise:

$ ssh-agent -t 2d

Die Ausgabe verrät, auf welche Werte Sie die Umgebungsvariablen $SSH_AUTH_SOCK und $SSH_AGENT_PID setzen müssen, damit ssh-agent korrekt arbeitet. Kopieren Sie die Programmausgabe entweder mit der Maus und fügen sie ein, oder lassen Sie die Ausgabe direkt beim Start durch eval auswerten:

$ eval $(ssh-agent -t 2d)

Beim Start verrät das Programm weiterhin direkt seine Prozess-ID, was der nachfolgende ps-Aufruf bestätigt (Abbildung 2). Der Agent quittiert nicht von selbst seinen Dienst – auch nicht, wenn Sie die Shell schließen. Um das Programm zu beenden, rufen Sie in der Shell, in der ssh-agent gestartet wurde, ssh-agent -k auf. Ist das nicht möglich, etwa, weil die aufrufende Shell schon nicht mehr läuft, bleibt als einziger Ausweg das kill-Kommando [3], zum Beispiel:

$ kill 29692
Abbildung 2: ssh-agent benötigt verschiedene Umgebungsvariablen und verrät auch seine PID beim Start.

Um den ssh-agent nicht als Daemon, sondern gezielt mit einer Anwendung (beispielsweise einem Terminalprogramm) zu starten, geben Sie den Namen der ausführbaren Datei im Aufruf mit an:

$ ssh-agent gnome-terminal &

Damit steht der Agent nur für diese Anwendung und die aus ihr heraus gestarteten Programme zur Verfügung. Beenden Sie das Terminal, stellt das auch das Aus für ssh-agent und alle darin enthaltenen Schlüsselinformationen dar.

Achtung: Einige Distributionen, darunter aktuelle Debian-Versionen, starten das Programm ssh-agent zusammen mit der X-Umgebung. Am besten überprüfen Sie dies mit dem in Abbildung 2 gezeigten ps/grep-Aufruf. Lädt der Benutzer in dieser Konfiguration Schlüssel ohne zeitliche Begrenzung in den Agenten (siehe nächster Abschnitt) und vergisst, den Bildschirm zu sperren, wenn er den Rechner kurz verlässt, kann das zu einem potenziellen Sicherheitsrisiko werden. Um dem System dieses Verhalten abzugewöhnen, passen Sie die Datei /etc/X11/Xsession.options an und kommentieren die Zeile

use-ssh-agent

durch ein vorangestelltes Rautezeichen (#) aus.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl: ssh, scp
    Die klassischen Unix-Programme Telnet und FTP erlauben Verbindungen und Datei-Transfers zu anderen Rechnern im Netz, sind aber unsicher: Alle Daten werden unverschlüsselt übertragen. Deswegen verwenden man heute die SSH-Tools (Secure Shell), die das Gleiche ermöglichen, dabei aber durch Verschlüsselung für Sicherheit sorgen.
  • Zu Befehl
    Jedesmal, wenn Sie sich über telnet auf einem Rechner anmelden oder per ftp Daten von einem Computer zu einem anderen übertragen, wird das Passwort – wie alle anderen Daten auch – im Klartext gesendet. Damit kann jeder, der den Netzverkehr "abhört", Informationen und damit auch Zugang zum benutzten Account bekommen. Mit der Secure Shell (ssh) und den dazugehörenden Kommandos ssh für das Login und scp zur Dateiübertragung sind sie auf der sicheren Seite: Hier kommen verschlüsselnde Alternativen auf der Kommandozeile.
  • Daten sicher teilen
    Beim Datenzugriff auf entfernte Rechner kombinieren SSH-basierte Dateisysteme einfache Konfiguration und sichere Verschlüsselung.
  • Buchtipp
  • X-Server und Shell-Tools für Windows
    Egal, ob Sie den Umstieg von Windows auf Linux erst planen, während der Umstiegsphase noch in beiden Welten zu Hause sind oder ohnehin abwechselnd unter Linux und Windows arbeiten, leistet ein X-Server für Windows gute Dienste – wie z. B. MobaXterm.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...