Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


SSH Beispiele

Vorbereitung ] [ SSH Beispiele ] SSH unter Windows ]


Im Folgenden werden einige praktische Beispiel zur elementaren Nutzung von SSH gegeben. Voraussetzung für die aufgeführten Beispiele ist ein laufender SSH-Dämon auf dem Server, auf dem lokalen Rechner muss lediglich der SSH-Client installiert sein. Ob mit- oder ohne Passwort bzw. Passphrase zur Authentifizierung gearbeitet wird, spielt bei den folgenden Beispielen keine Rolle.
Auch wird nur ein kleiner Teil der Möglichkeiten unter SSH vorgestellt, weitere Informationen sind z.B. in der Dokumentation oder im Internet zu finden.

Remote-Verbindung

Die elementarste Verwendung von SSH ist ein Aufbau einer Remote-Verbindung, es kann so die Funktionalität von 'telnet' bzw. 'rlogin' ersetzt werden. Zur Remote-Verbindung hier zwei Beispiele:

linux@experimental:~$ ssh merlin
norbert@experimental:~$ ssh -l linux merlin

In beiden Beispielen wird eine Verbindung auf dem Rechner: 'merlin' als Benutzer 'linux' erzielt. Während in der ersten Zeile dieses vom Benutzer: 'linux' aus durchgeführt wird, wird es in der zweiten Zeile, dieses durch den Benutzer: 'norbert', beide auf dem Rechner: 'experimental' erreicht.
Zum Beenden einer Remote-Sitzung kann entweder 'Strg-D' oder das Escape-Zeichen (Voreinstellung ist die Tilde) gefolgt von einem Punkt ('~.') genutzt werden. Alternativ endet die Sitzung, sobald: 'exit' eingegeben wird.

Kopieren von Dateien

Das scp-Kommando erlaubt das Kopieren von Dateien von- oder zu einen entfernten Rechner, ähnlich dem des cp-Kommandos oder rcp-Kommandos. Hierzu ein zwei Beispiele:

linux@experimental:~$ scp merlin:./test ./test_from_merlin
norbert@experimental:~$ scp linux@merlin:./test ./test_from_merlin

Im der ersten Zeile kopiert der Benutzer: 'linux' auf dem Rechner: 'experimental' die Datei: 'test' auf dem Rechner: 'merlin' mit neuen Namen: 'test_from_merlin'. Das Zeichen ':' trennt den Hostnamen vom Dateinamen. Im der zweiten Zeile geschieht das Gleiche, jedoch kopiert dieses mal der Benutzer: 'norbert', auf dem Rechner: 'experimental'.
'scp' terminiert normalerweise wenn das Kopieren abgeschlossen ist.

Weiterhin kann zum Kopieren von Daten SFTP (Secure File Transfer Program) genutzt werden. Im Unterschied zu Programm: 'scp' ist 'sftp' interaktiv, d.h. mehrere Befehle können innerhalb einer Sitzung (Session) durchgeführt werden. Die Befehle sind analog zu denen von FTP. Hierzu eine Beispiel-Sitzung:

norbert@experimental:~$ sftp linux@merlin
Connecting to merlin...
sftp> cd public_html
sftp> get index.htm
sftp> put test.htm
sftp> exit
norbert@experimental:~$

Der Benutzer: 'norbert' loggt sich auf dem Rechner: 'merlin' als Benutzer: 'linux' ein. Nach der Eröffnung der Session wird in das Verzeichnis: 'public_html' gewechselt und die Datei: 'index.htm' herunter geladen, anschließend wird 'test.htm' herauf geladen. Mit 'exit' wird die Session geschlossen.

Ausführen von Kommandos

Auch das Ausführen von Kommandos auf einen entfernten Rechner kann mittels SSH geschehen. Der Befehl: 'ssh' ist in diesem Fall analog zu 'rsh' zu sehen. Wie bei 'rsh' wird die Standardeingabe zum entfernten Rechner hin übergeben. Die Standardausgabe und Fehlerroutinen werden an den aufrufenden Rechner zurückgesandt. Hierzu zwei Beispiele:

linux@experimental:~$ ssh merlin ./test.sh
norbert@experimental:~$ ssh -l linux merlin ./test.sh

In der ersten Beispielzeile führt der Benutzer: 'linux' auf dem Rechner: 'experimental' das Shell-Script: 'test.sh' auf dem entfernten Rechner 'merlin' aus.
In der zweiten Zeile erledigt das Gleiche der Benutzer: 'norbert', auf dem Rechner: 'experimental'.
'ssh' terminiert normalerweise, wenn das ausgeführte Kommando bzw. Programm beendet ist.

Tunnel mit SSH

SSH kann noch mehr, als nur sichere Verbindungen zu entfernten Rechnern aufbauen. Mittels SSH können auch fast beliebige andere Protokolle abgesichert werden, z.B. dass als unsicher geltende pop3-Protokoll zum Senden von Mails. Durch 'Port Forwarding' können Ports durch eine sichere SSH-Verbindung umgeleitet werden. Dabei tritt SSH ähnlich wie ein Proxy auf, der auf der einen Seite des SSH-Kanals die Verbindung entgegennimmt und sie auf der anderen Seite mit dem jeweiligen Server verbindet.
SSH kennt zwei unterschiedliche Varianten: 'Local Port Forwarding' und 'Remote Port Forwarding'. In den meisten Fällen ist 'Local Port Forwarding' die passende Lösung.

Local Port Forwarding

Bei 'Local Port Forwarding' wird eine Verbindung, die auf einem lokalen Client-Port eintrifft, durch den sicheren SSH-Kanal auf einen Port auf einem entfernten Server weiter geleitet. Dieses Verfahren wird daher auch als ausgehender Tunnel bezeichnet. Der Syntax für: 'Local Port Forwarding' sieht wie folgt aus:

ssh remotelogin@remotehost -L localport:remotehost:remoteport

Im Folgenden, ein Beispiel wie eine unsichere Telnet-Verbindung über Standard-Port: '23', über eine gesicherte SSH-Verbindung getunnelt werden kann. Dabei wird angenommen, dass sich ein Telnet-Server auf dem Rechner: 'merlin' befindet, und der Rechner: 'experimental' die sichere SSH-Verbindung aufbaut, und anschließend den Telnet-Client aufruft.

linux@experimental:~$ ssh linux@merlin -L 4711:merlin:23

Das Kommando baut eine sichere SSH-Verbindung als Benutzer: 'linux' zum Rechner:' merlin' auf. Weiterhin werden alle Anfragen, die auf den lokalen Port: '4711' von 'experimental' eintreffen, auf den entfernten Rechner: 'merlin' an den Port: '23' weitergeleitet. Die Kommunikation läuft dabei über die zuvor aufgebaute SSH-Verbindung, es wird halt getunnelt.

linux@experimental:~$ telnet localhost 4711

Wird nun, z.B. von einer anderen Konsole aus, eine Telnet-Anfrage zum Port: '4711' des eigenen Rechners ('localhost') eingeleitet, so gelangt die Verbindung über den SSH-Tunnel zum Rechner: 'merlin' Port: '23'.
Natürlich bringt das Bsp. mit Telnet nicht viel Sinn, da SSH sowieso Telnet gänzlich ersetzen kann. Es sollte nur, ein einfach zu reproduzierendes Beispiel sein.
Sinnvoller sieht es aus, wenn man sich anstatt des Telnet-Servers auf  'merlin' ein pop3-Mailserver vorstellt und anstatt des Telnet-Client auf 'experimental' einen Mail-Client nutzt. In diesem Fall wird das unsichere pop3-Protokoll über den sicheren SSH-Tunnel geleitet.

Remote Port Forwarding

Das 'Remote Port Forwarding' funktioniert genau anders herum als 'Local Port Forwarding'. Die Verbindung kommt an einem Port auf dem Host an, auf dem der SSH-Server läuft. Das 'Forwarding' leitet die Daten dann durch den SSH-Kanal weiter zur Client-Seite und dort an einen beliebigen Port. Dieses Verfahren wird daher auch als eingehender Tunnel bezeichnet. Der Syntax für: 'Remote Port Forwarding' sieht wie folgt aus:

ssh remotelogin@remotehost -R remoteport:localhost:localport

Voraussetzung beim Tunneln ist, beide Seiten müssen SSH können, weiterhin sollten beim 'Forwarding' ein unbenutzter High-Port, z.B.: '12345' gewählt werden.

Anmerkungen

Anstatt des Schalters '-l', zum Spezifizieren des 'remote user name', kann auch der @-Syntax genutzt werden. Für das Kommandos 'ssh' sieht der Aufruf dann wie folgt aus:

norbert@experimental:~$ rlogin linux@merlin

Weitere Infos

Homepage: OpenSSH http://www.openssh.org/
Manualseiten zu: ssh; scp; sftp man ssh; man scp; man sftp
System-Dokumentation: ssh /usr/share/doc/ssh

Home ] Nach oben ] Vorbereitung ] [ SSH Beispiele ] SSH unter Windows ]

letzte Änderung: 01. November 2006

 

Copyright © 2004 Norbert Eusterholz