Dreingabe

Mit dem SSH-Paket kommen noch zwei weitere interessante Programme auf den Rechner – Secure Copy (Scp) und Secure FTP (Sftp). Wie die Namen schon vermuten lassen, handelt es sich um Programme zum Kopieren und für FTP-Transfers über SSH. Die grundlegende Syntax der beiden Programme ähnelt sich stark.

Um beispielsweise die Datei test.txt aus Ihrem Home-Verzeichnis auf einem entfernten Rechner in das aktuelle Verzeichnis zu kopieren, verwenden Sie die folgende Kommandozeile:

scp RemoteRechner:test.txt .

Je nach Authentifizierungsmethode geben Sie eventuell noch Ihr Passwort ein. Zwingend ist in jedem Fall den Doppelpunkt: Er trennt den Namen des entfernten Rechners vom Pfad. Ebenso obligatorisch ist die Angabe des lokalen Pfades. Im einfachsten Fall handelt es sich um den aktuellen Ordner, den im Beispiel der abschließende Punkt repräsentiert. Um mehrere Dateien zu kopieren, schreiben Sie diese getrennt durch Leerzeichen hintereinander:

scp Remote-Rechner A:test1.txt Remote-Rechner B:test2.txt .

Arbeiten Sie hier mit einem Standard-Login via Passwort, verlangt der Client für jede zu kopierende Datei die Eingabe des Passworts. Verwenden Sie hingegen die oben vorgestellte Methode mit einem Schlüssel ohne Passwort, entfällt die Eingabe. Mit dem Befehl scp Remote-Rechner A:test.txt Remote-Rechner B: kopieren Sie die Datei von Rechner A zu Rechner B.

Um die Datei als Benutzer tuppes (und damit aus /home/tuppes) in das lokale Verzeichnis zu kopieren, gehen Sie folgendermaßen vor:

scp tuppes@RemoteRechner:test.txt .

Im Unterschied zu SSH kommt hier nicht die Option -l Username zum Einsatz. Kopieren Sie andersherum – von lokal nach remote – gestaltet sich das genau so einfach:

scp ./test.txt tuppes@RemoteRechner:

Der Befehl kopiert die Datei tuppes.txt aus dem aktuellen Verzeichnis (./) nach /home/tuppes auf dem entfernten Rechner. Achten Sie auch hier wieder auf den abschließenden Doppelpunkt.

Sftp nutzt den gleichen Befehlsaufbau wie SCP, kennt aber zwei Betriebsmodi: einen interaktiven Modus, wie vom normalen FTP gewohnt, sowie einen Batch-Modus. Um unsere Beispieldatei im Batch-Modus via Sftp vom Remote-Rechner zu holen, geben Sie folgendes ein:

sftp RemoteRechner:test.txt .

Tippen Sie sftp RemoteRechner:test.txt remote_test.txt, dann benennt das Programm die Datei zusätzlich lokal in remote_test.txt um. Ein einfaches sftp RemoteRechner öffnet eine interaktive verschlüsselte FTP-Session auf dem entfernten Computer, wo der Server nach erfolgreichem Anmelden FTP-Befehle wie GET oder PUT akzeptiert.

Tunnelbau

Das beste zum Schluss: SSH erlaubt es Ihnen, beliebige Protokolle in SSH zu verpacken. Beispielsweise bietet es die Möglichkeit, das oben erwähnte Telnet-Protokoll über eine verschlüsselte SSH-Verbindung zu leiten – unbemerkt vom Anwender. Der Fachausdruck für das Verpacken eines Protokolls in einem anderen heißt allgemein Tunneln.

Ein SSH-Tunnel arbeitet nach einem einfachen Prinzip. Wie jeder andere Dienst lauscht er auf einem Port und wartet auf Verbindungen. Geht eine Verbindung ein, verschlüsselt der Tunnel die Daten und gibt sie an die TCP/IP-Schicht weiter, die die Daten an den Remote Rechner sendet. Dort wandern die Daten den umgekehrten Weg hoch zur Anwendung. Abbildung 4 verdeutlicht den Vorgang.

Abbildung 4: Vereinfachtes Schaubild des Paketflusses durch einen SSH-Tunnel.

Gemäß Vorgabe dürfen nur Programme den Tunnel nutzen, die auf demselben Rechner laufen. Möchten Sie auch anderen Rechnern im Netzwerk den Tunnel zur Verfügung stellen, geben Sie beim Aufbau des Tunnels dem Kommando ein -o GatewayPorts=yes mit auf den Weg. Die zusätzliche Option bewirkt, dass der Tunnel nun allen Rechnern im Netzwerk offen steht. Alternativ setzen Sie die Option in der Konfigurationsdatei ssh_config.

Der Vorgang ähnelt einer VPN-Verbindung (Virtual Private Network), die ebenfalls verschlüsselt ist. Der große Vorteil von SSH gegenüber VPN (beispielsweise mit OpenSWAN) liegt in der Einfachheit: Ein VPN aufzusetzen erfordert eine gehörige Portion an Kenntnis und oft auch an Geduld. Die SSH-Variante hat allerdings den Nachteil, dass Sie immer nur einen einzelnen TCP-Port weiterleitet. Anders gesagt: Sie brachen genau so viele SSH-Tunnel, wie Sie Ports weiterleiten wollen. Wollen Sie die komplette Kommunikation zwischen zwei Rechnern verschlüsseln, sind Sie mit einem VPN vermutlich besser bedient.

Grundlegend darf jeder Benutzer Tunnels aufbauen, aber Tunnels mit privilegierten Ports – darunter fallen alle mit einer Nummer unter 1024 – sind dem Administrator root vorbehalten.

Um einen Tunnel vom lokalen Rechner zu einem entfernten Rechner aufzubauen, der das Telnet-Protokoll (Port 23) tunnelt, geben Sie ein:

ssh -c blowfish -L 23:Remote-Box:23 Remote-Box

Das Kommando baut über die -L Option einen Tunnel vom lokalen Port 23 (die erste "23") zum einem entfernten Rechner auf Port 23 auf. Dabei löst die die schnellere Blowfish-Verschlüsselungsmethode das langsamere 3DES-Verfahren ab. Indem Sie den Namen des entfernten Rechners zweimal angeben, nutzen ein weiteres Feature von SSH: So bauen Sie einen Tunnel auf, der vom ersten Rechner über einen zweiten zu einem dritten Computer führt.

Das Kommando ssh -L 23:192.168.1.1:23 192.168.20.5 startet anschließend den Tunnel auf dem lokalen Rechner und führt ihn über eine Zwischenstation (192.168.1.1) zum eigentlichen Endpunkt (192.168.20.5). Die allgemeine Syntax zum Aufbau eines Tunnels von lokal zu entfernt lautet also: ssh -L LokalerPort:Remote-Rechner 1:Remote-Port Remote-Rechner_2. Bei einem direkten Tunnel entsprechen sich die beiden Rechnerangaben.

Abbildung 5 zeigt mittels Netstat, dass tatsächlich eine Telnet-Verbindung unter Zuhilfenahme von SSH besteht. Der erste Netstat-Befehl verrät, dass ein SSH-Prozess mit der Prozess-ID 3311 auf Port 23 lauscht. Der zweite Befehl zeigt eine bestehende Verbindung auf Port 22 mit genau dieser PID 3311. Konsequenterweise läuft die Telnet-Kommunikation durch die SSH-Connection, also in SSH getunnelt.

Abbildung 5: Das Programm Netstat zeigt einen bestehende Tunnel via SSH.

Die Syntax zum Aufbau eines Tunnels legt nahe, dass lokaler und entfernter Port nicht identisch zu sein brauchen. Genau das ist der Fall. Angenommen, auf dem Remote-Rechner läuft ein Proxy auf Port 3128 und der Proxy ist für transparentes Proxying konfiguriert, so leiten Sie alle HTTP Anfragen transparent so um:

ssh -o GatewayPorts=yes -L 80:RemoteRechner:3128 RemoteRechner

Ein solches Umlenken eines Ports auf einen anderen heißt Port-Forwarding. Diese Methode erfordert wieder den Einsatz des Parameters -o GatewayPorts=yes, damit anderen Rechnern im Netzwerk der Tunnel offen steht.

Das Tunneln funktioniert auch in die umgekehrte Richtung. Mit der folgenden Syntax bauen Sie einen Tunnel von einem entfernten Rechner zu dem lokalen Computer auf:

ssh -R Remote-Port:LokalerRechner:LokalerPort RemoteRechner

Im Falls des Proxys ergibt sich daraus:

ssh -o GatewayPorts=yes -R 3128:LokalerRechner:80 RemoteRechner<C>.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Remote-Zugriff über Betriebssystem-Grenzen

    Das GUI-Programm Kontrolpack, jetzt in Version 3.0.0 erhältlich, ermöglicht den Dateizugriff und das Ausführen von Befehlen auf entfernten Rechner über Betriebssystem-Grenzen hinweg.
  • SSH bequem
    Sämtliche SSH-Transaktionen kann man auch über die Konsole ausführen: Aber wer will die langen Kommandos schon von Hand eingeben? Hier hilft Secpanel.
  • Sicher unterwegs im Wireless LAN
    Wireless LAN endet nicht an der Grundstücksgrenze, und gerade in Städten finden sich immer wieder unerwünschte Zaungäste. Wir zeigen Ihnen, wie Sie es Angreifern möglichst schwer machen, in Ihr drahtloses Netz einzudringen.
  • SSH über unzuverlässige Leitungen
    SSH nervt, wenn die WLAN-Verbindung immer wieder abbricht, sich die IP-Adresse ändert, die Datenpakete über GSM nur tröpfeln und man das Getippte erst nach Sekunden zu Gesicht bekommt. Glücklicherweise gibt es AutoSSH und Mosh.
  • Angetestet
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

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

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...