claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 10/2005

Sichere Datenübertragung mit ssh und scp

Auf Nummer Sicher

von Heike Jurzik


Wer Programme auf entfernten Rechnern ausführen möchte, muss nicht zwingend vor Ort sein -- mit SSH bietet Linux eine sichere Methode, Kommandos (auch grafische Anwendungen) über eine verschlüsselte Verbindung auszuführen und Daten zwischen Rechnern auszutauschen.

SSH steht für "Secure Shell" und bezeichnet nicht nur ein Protokoll, sondern auch das Programm selbst: Mit ssh loggen Sie sich auf entfernten Rechnern ein und führen wahlweise Befehle auf der Kommandozeile aus oder starten sogar grafische Anwendungen. Die Daten wandern verschlüsselt durch das Netz.

Zum SSH-Paket gehört auch das Programm scp ("Secure Copy"), mit dem Sie in Windeseile Dateien von einem Rechner zum anderen übertragen. Auch hier sorgt Verschlüsselung für sicheren Datentransfer.

Wir zeigen, wie Sie auf der Kommandozeile mit ssh und scp auf Nummer Sicher gehen, aber auch Grafisches kommt nicht zu kurz: Wir erklären das so genannte X-Forwarding und entführen Sie kurz in fremde Welten: Mit geeigneten Programmen kommunizieren Sie auch von Windows und Mac OS X aus per SSH mit dem Linux-Rechner.

Am Anfang war der Server

SSH arbeitet nach dem Client-Server-Prinzip: Um über das sichere Protokoll zu einem anderen Rechner Verbindung aufzunehmen, brauchen Sie dort nicht nur ein Benutzerkonto, sondern es muss auf der Gegenseite ein SSH-Server (sshd) laufen. Über den SSH-Client melden Sie sich beim Server an; dabei weisen Sie sich mit dem Benutzerkennwort oder mit einem kryptographischen Schlüssel als zugelassener Benutzer aus.

Suse Linux 9.2/9.3 und Mandrake Linux 10.2 aktivieren den SSH-Server standardmäßig, so dass keine weiteren Schritte nötig sind, um zu diesen Systemen Verbindung aufzunehmen. Benutzer von Ubuntu Linux und Knoppix rüsten den Server nach bzw. starten ihn von Hand, um Anwendern auf entfernten Rechnern Einlass zu gewähren: Unter Knoppix starten Sie den sshd beispielsweise über das Knoppix-Menü (mit dem Pinguin) / Server-Dienste / SSH Server starten. Für den Standardbenutzer-Account namens knoppix müssen Sie darüber hinaus aus Sicherheitsgründen ein Passwort setzen (welches normalerweise nicht eingerichtet ist). Wie Sie den Server unter Ubuntu Linux ans Laufen bringen, erfahren Sie in den Debian-Tipps dieser Ausgabe ab Seite 60.

Eine gute Verbindung

Auf der Kommandozeile verwenden Sie das Programm ssh, um sich schnell und verschlüsselt auf einem entfernten Rechner anzumelden. Anschließend arbeiten Sie auf dem Zielrechner wie auf einem heimischen Terminal. Beim Verbindungsaufbau geben Sie den Benutzernamen und den Namen des Zielrechners oder dessen IP-Adresse an. Heißt die entfernte Maschine beispielsweise asteroid und ist Ihr Benutzername petronella, schreiben Sie:

ssh petronella@asteroid

Alternativ geben Sie nach dem Klammeraffen die IP-Adresse der Gegenseite an, z. B.:

ssh petronella@192.168.2.1

Der Benutzername ist übrigens nur dann nötig, wenn Ihr Account auf dem entfernten Rechner anders lautet als der lokale. Heißen Sie also beispielsweise auf beiden Maschinen petronella, lassen Sie den Benutzernamen einfach weg:

petronella@transpluto:~> ssh asteroid
password:

Am Passwort-Prompt geben Sie das richtige Kennwort ein -- beachten Sie, dass keine Sternchen beim Tippen auftauchen, Sie das Passwort also blind eingeben (Abbildung 1).

Abb. 1: Vorher und nachher: Das "ssh"-Kommando geben Sie auf dem lokalen Rechner ein; nach der Passworteingabe arbeiten Sie auf der entfernten Maschine.

First Contact

Handelt es sich um die erste Kontaktaufnahme, warnt SSH übrigens, dass die Gegenseite unbekannt ist, und fragt nach, ob Sie die Verbindung wirklich aufbauen wollen. Bestätigen Sie, indem Sie yes eingeben und mit [Eingabe] bestätigen. Anschließend schreibt SSH den so genannten Fingerabdruck des anderen Rechners in die Datei known_hosts im versteckten Verzeichnis .ssh des eigenen Home-Verzeichnisses -- eine sinnvolle Sicherheitsmaßnahme, denn bei zukünftigen Verbindungen schaut das Programm immer nach, ob dieser Fingerabdruck der gleiche ist.

Ist das nicht der Fall, gibt das System eine Warnmeldung aus und weigert sich, die Verbindung aufzubauen (siehe Listing SSH-Warnung), denn es könnte ja sein, dass jemand anders Ihnen einen fremden Rechner "unterschieben" möchte. (Das nennt man "Man in the middle attack".) Der Fingerabdruck passt übrigens auch dann nicht mehr, wenn auf dem entfernten Rechner ein neues Linux-System eingespielt wurde -- es muss also nicht zwingend ein Sicherheitsproblem sein. Sollte dieses der Fall sein, können Sie ssh mit folgenden Schritten wieder zur Mitarbeit bewegen:

  1. Starten Sie einen Text-Editor Ihrer Wahl, z. B. Kate oder KWrite, und geben Sie schon beim Programmstart die zu bearbeitende Datei an. Über KDEs Schnellstarter geht das beispielsweise mit [Alt-F2] und Eingabe von kate ~/.ssh/known_hosts bzw. kwrite ~/.ssh/known_hosts.
  2. Navigieren Sie bis zu dem Eintrag, der Probleme verursacht, und löschen Sie die entsprechende Zeile.
  3. Speichern Sie die Änderungen und verlassen Sie den Editor. Beim nächsten ssh-Aufruf erscheint wieder die gleiche Warnung wie beim Erstkontakt.
SSH-Warnung
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle
attack)!
It is also possible that the RSA host key has just been changed.

Befehlsgewaltig

Dem ssh-Kommando können Sie direkt einen Befehl übergeben, den es dann auf dem entfernten Rechner ausführt: Hängen Sie das gewünschte Kommando einfach an den Aufruf an und schließen Sie es am besten in Hochkommas ein, damit ihn die eigene Shell nicht auswertet:

ssh asteroid "ls easylinux"
Password:
2003
2004
2005
AUTORENFORMAT.txt
...

Nachdem der angegebene Befehl abgearbeitet wurde, beendet SSH die Verbindung.

Bei einigen Programmen beschwert sich ssh allerdings, wenn Sie so vorgehen -- zum Beispiel beim textbasierten FTP-Client NcFTP [1] oder beim Midnight Commander mc [6]. Das Problem ist, dass solche Programme starken Einfluss auf die Darstellung im Terminal-Fenster nehmen wollen. Damit das klappt, erschaffen Sie über die Option -t eine Art "Pseudo-Terminal", in dem sich solche Programme wohlfühlen. SSH verschlüsselt dabei die Ausgabe des Terminals und zeigt sie im eigenen Fenster wieder entschlüsselt an (Abbildung 2). Auch hier beendet SSH die Verbindung zur Gegenseite, nachdem das Programm fertig mit der Arbeit ist.

Abb. 2: Terminal-Zauber -- mit "ssh -t" erschaffen Sie ein "Pseudo-Terminal", in dem NcFTP die Bildschirmsteuerung übernimmt.

Und was ist mit Grafik?

Auch grafische Programme starten Sie mit SSH und dem so genannten X-Forwarding [2] auf entfernten Rechnern starten. Damit das klappt, muss der SSH-Server solche Weiterleitungen erlauben. Die Konfigurationsdatei finden Sie in /etc/ssh/sshd_config. Hier muss ein Eintrag der Form

X11Forwarding yes

vorhanden sein. Steht hier no oder ist die ganze Zeile durch eine vorangestellte Raute (#) auskommentiert, bearbeiten Sie die Datei als Administrator in einem Text-Editor, z. B. mit [Alt-F2] und Eingabe von kdesu kwrite /etc/ssh/sshd_config.

Damit die Änderungen greifen, starten Sie den SSH-Server neu. Auch das erledigen Sie als Administrator. Öffnen Sie dazu eine Konsole ([Alt-F2] und Eingabe von konsole), werden Sie mit su - und Eingabe des Root-Passwortes zum Administrator und starten Sie den Server mit

# /etc/init.d/sshd restart
sshd stoppen:    [  OK  ]
sshd starten:    [  OK  ]

neu. Um das X-Forwarding auf Client-Seite einzuschalten, geben Sie ssh-Aufruf die Option -X an. Achten Sie darauf, ein großes "X" zu verwenden -- der Kleinbuchstabe bewirkt das genaue Gegenteil.

ssh -X huhn@asteroid

Nach Eingabe des Passwortes können Sie nun ein grafisches Programm starten, z. B. den Web Browser Firefox (Abbildung 3). Dazu geben Sie am Prompt den Befehlsnamen ein -- mit dem angehängten kaufmännischen Und-Zeichen (&) starten Sie den Prozess im Hintergrund und geben damit das Terminal gleich für die Eingabe weiterer Befehle frei.

Abb. 3: Starten Sie den Web Browser Firefox einfach auf einem entfernten Rechner -- das Programmfenster erscheint lokal.

Kopierschutz

Wie schon erwähnt, bringt das SSH-Paket auch ein Kommandozeilenwerkzeug für den sicheren Datentransfer mit. Genau wie bei der Verbindung mit ssh geben Sie den Benutzernamen (sofern dieser abweicht) und den Rechnernamen bzw. die IP-Adresse an. Durch einen Doppelpunkt davon abgetrennt definieren Sie die zu kopierende(n) Datei(en). So befördert das Kommando

scp petronella@asteroid:huhn.txt .

die Datei huhn.txt vom Rechner asteroid in das aktuelle Verzeichnis (abgekürzt durch den Punkt) des lokalen Rechners. Wer die Datei lieber unter einem anderen Namen ablegt, definiert diesen einfach beim Aufruf: Der Befehl

scp petronella@asteroid:huhn.txt hahn.txt

weist scp an, die entfernte Datei huhn.txt lokal als hahn.txt zu speichern. Damit Sie nicht jedes Mal in das Zielverzeichnis hineinwechseln müssen, geben Sie es schon beim Aufruf an. Um die Datei im eigenen Home-Verzeichnis im Unterordner texte abzulegen, tippen Sie beispielsweise:

scp petronella@asteroid:huhn.txt ~/texte/

Gleiches gilt natürlich für den Startpunkt: Befindet sich die Quelldatei dort im Ordner texte/huehner/, lautet das entsprechende scp-Kommando:

scp petronella@asteroid:~/texte/huehner/huhn.txt .

Richtungswechsel

Das Kopieren in die andere Richtung funktioniert genauso: Geben Sie zunächst die Datei(en) auf dem lokalen Rechner und danach den Zielpunkt an. Wer beispielsweise alle MP3-Dateien eines Verzeichnisses sicher auf einen entfernten Rechner transportieren und dort in einem Unterverzeichnis musik ablegen möchte, verwendet den Aufruf:

scp mp3/*.mp3 petronella@asteroid:~/musik/

Achten Sie auch hier auf den Doppelpunkt hinter dem Rechnernamen bzw. der IP-Adresse -- lassen Sie diesen im Aufruf weg, landet lediglich eine lokale Kopie auf der Platte, weil ssh die Angabe als langen lokalen Dateinamen interpretiert.

In einem Rutsch

Der Versuch, ganze Verzeichnisse und ihre Inhalte zu kopieren, scheitert im einfachen Aufruf. Das Kommando scp beschwert sich in dem Fall:

$ scp mp3s/ petronella@asteroid:
Password:
mp3s: not a regular file

Genau wie beim Programm cp, das auf dem lokalen Rechner Dateien und Ordner kopiert, weisen Sie auch scp mit dem Parameter -r an, rekursiv zu kopieren. So befördert der Befehl

scp -r mp3s/ petronella@asteroid:~/musik/

das Verzeichnis mp3s, alle darin enthaltenen Dateien und eventuelle Unterordner auf den Rechner asteroid und legt diese im Ordner musik im Home-Verzeichnis des Benutzers petronella ab.

Fremde Welten

Das Arbeiten mit ssh und scp ist nicht auf Linux beschränkt -- auch Windows und Mac OS X bieten Programme, mit denen Sie auf der Kommandozeile oder in einem grafischen Client per ssh auf Linux-Rechner zugreifen bzw. per scp Daten hin- und herkopieren. Das freie Terminal-Programm PuTTY, mit dem Sie sich von Windows aus auf einem Linux-PC anmelden und dort auf der Kommandozeile arbeiten, finden Sie unter [3]. Mit WinSCP kopieren Sie Dateien zwischen Windows- und Linux-Rechern hin und her; dieses Programm haben wir in einer früheren Ausgabe [4] vorgestellt.

Wer mit Mac OS X arbeitet, verwendet ssh und scp genau wie unter Linux auf der Kommandozeile -- alternativ gibt es für den sicheren Datenaustausch auch den grafischen Client Fugu [5] (Abbildung 4). (hge)

Abb. 4: Per Mausklick um die Welt -- Fugu ist ein praktischer SSH/SCP-Client für Mac OS X.
Infos
[1] NcFTP-Artikel: Heike Jurzik, "Transferleistung -- NcFTP", EasyLinux 03/2004, S. 74 ff., http://www.easylinux.de/2004/03/074-ncftp/
[2] Artikel zum Thema X-Forwarding: Hans-Georg Eßer, "Fenster in der Ferne -- Linux-Programme auf anderen Rechnern starten", EasyLinux 11/2004, S. 53 ff.
[3] PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
[4] WinSCP-Artikel: Heike Jurzik, "Richtig verbunden -- Daten im Netzwerk übertragen mit WinSCP und Fish", EasyLinux 11/2003, S. 18 ff., http://www.easylinux.de/2003/11/018-winscp/
[5] Grafisches ssh/scp unter Mac OS X: http://rsug.itd.umich.edu/software/fugu/
[6] Artikel zum Midnight Commander: Andreas Kneib, "Midnight Commander", LinuxUser 07/2002, S. 58 ff., http://www.linux-user.de/ausgabe/2002/07/058-mc/mc.html

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2014 COMPUTEC MEDIA GmbH | Last modified: 2007-04-05 11:10

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]