Tutorials - Secure SSH Tutorial Part 3: Usage

Sprachenübersicht/Betriebssysteme/Linux/Security

Secure SSH Tutorial Part 3: Usage

Diese Seite wurde 23738 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: ssh, scp, ports forwarding, ssh tunneling, x11 forwarding, remote forward, local forward, smb work tunneling

Inhaltsverzeichnis



Vorwort Top



Im ersten Teil dieser Tutorialserie ging es um die sichere Verwaltung des Host-Schlüssels, der zweite Teil beschäftigt sich mit Identity/Pubkey Authentifizierung unter SSH. Dieser Teil soll den Umgang mit den Tools, die SSH zur Verfügung stellt lehren, und basiert auf den ersten zwei Tutorials.

Tutorials in dieser Artikelserie Top








ssh - remote login program Top



ssh ist ein Programm, mit dem man sich mit einem anderen Computer verbindet, und ihn fernsteuert. ssh wurde entwickelt um Programme wie z.B rlogin, oder rsh mit einem verschlüsselten Protokoll zu ersetzen. ssh unterstüzt auch X11 forwarding, damit kann man die grafische Ausgabe von Linux übertragen.

Hier ist eine Auflistung der für uns relevanten Parameter:

ssh [-p Port] [-l login_name] [user@]hostname [command]

Falls command angegeben wird, wird dieser Befehl anstelle der login shell gestartet.

-p <Port> gibt den Port an, auf dem der SSH-Server läuft, -l <login_name>, und [user@] den Benutzername, mit dem man sich auf dem System anmeldet, und hostname die IP-Adresse, oder den hostname des Systems.

Als Beispiel:

Code:


workstation:/home/simon# ssh -l simon -p 443 localhost
Password:
Linux vsn-server 2.6.11 #3 SMP Thu Mar 3 22:27:04 CET 2005 i686 unknown

Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/share/doc/*/copyright

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Last login: Wed Aug 17 16:01:26 2005 from 192.168.0.2
simon@vsn-server:~$



Wie man ein Identity/Pubkey auswählt, wird hier im Teil 2 beschrieben. Die Behandlung von Schlüsseln wird in den ersten Tutorial ausreichend beschrieben.

scp - remote file copy program Top



scp kopiert Dateien zwischen dem ssh server, und dem localhost verschlüsselt über ein Netzwerk.

Wichtige Parameter:

scp [-l limit] [-r] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2

-l <limit> setzt die Bandbreite auf <limit> Kbit/s.
-P <Port> gibt den Port des ssh-servers an.
-r kopiert die Dateien rekursiv (d.h. mit allen Unterverzeichnissen).

Beispiel:

Code:


workstation:/home/simon# scp datei.txt simon@vsn-server:/home/simon/files/



kopiert die Datei datei.txt aus dem aktuellen Ordner auf den ssh-server (vsn-server) in das Verzeichnis /home/simon/files.

Natürlich lassen sich so Dateien auch auf den Server kopieren, etwas was wir im zweiten Tutorial gemacht haben:

Code:


workstation:/home/simon# scp -r simon@vsn-server:/home/simon/files/ /home/simon/incoming



kopiert die Dateien aus /home/simon/files vom ssh-server rekursiv in das lokale Verzeichnis /home/simon/incoming.

ssh - forwarding Top



Ein weiteres Feature von SSH ist Port Forwarding, damit kann man z.B. auf einen unverschlüsselten Dienst auf dem Server verschlüsselt zugreifen, oder eine verschlüsselte Verbindung zum Server aufbauen, und den Server dann als Proxy benutzen.

Es gibt 2 Arten von forwarding in SSH:


  • Local-Forward

    Nehmen wir an wir haben in Australien einen Mail-Server. Wenn wir eine normale Verbindung über 110 mit ihm aufbauen, dann werden die Daten unverschlüsselt zum Server übertragen. Deshalb bauen wir mit dem SSH-Server eine Verbindung auf, und öffnen eine Verbindung vom lokalen Port 123 über den SSH Tunnel zum Port 110 auf dem Mailserver.

    [workstation:123] -> verschlüsseln -> [ssh-server] -> unverschlüsselt [mailserver:110]

    Der Mailserver kann natürlich (im besten Fall) auch der SSH-Server sein laugh

    Dafür machen wir folgendes:

    Code:


    workstation:/home/simon# ssh -l simon -L 123:mailserver:110 ssh-server
    simon@ssh-server's password:
    ssh-server:/home/simon# 



    Solange diese Verbindung offen ist, hält SSH den lokalen Port 123 offen, deshalb lassen wir das Fenster jetzt offen, und öffnen ein neues:

    Code:


    workstation:/home/simon# telnet 127.0.0.1 123
    +OK Hello there.
    USER blablab@babala.com
    +OK Password required.
    PASS hallo
    +OK logged in.



    Jetzt wird unsere Verbindung bis zum ssh-server, der bestenfalls unser mailserver ist, verschlüsselt.

    Mit -g, oder GatewayPorts yes in der Datei ~/.ssh/config oder /etc/ssh/ssh_config wird der Port 123 übrigens nicht nur lokal, sondern global an localhost gebunden.




  • Remote-Forward

    Remote-Forwarding ist genau der umgekehrte Weg. Nehmen wir an, wir haben bei der Arbeit eine Windows Kiste, und wir wollen zuhause weiter Arbeiten. Leider lässt die Firewall Verbindungen nach innen nicht zu. Jetzt kommt SSH ins Spiel: Wir bauen eine Verbindung nach Hause (Linux Box) auf, und leiten den Port 445 vom Büro nach Hause auf 123 um:

    Zuerst müssen wir in der .ssh/config Datei auf der Arbeit den Port-Forward freigeben:

    ~/.ssh/config:


    Host samba-tunnel-home
       Hostname      ip-at-home
       RemoteForward 123:localhost:445
       User          simon



    Jetzt können wir uns von der Arbeit zuhause einloggen, und alle paar Sekunden etwas nach Hause schicken, damit die Verbindung nicht von einer Firewall oder etwas ähnlichem unterbrochen wird:

    Code:


    work:/home/simon# ssh samba-tunnel-home
    simon@ip-at-home's password:
    simon@vsn-server:/home/simon# ping -i 8 127.0.0.1
    64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.3 ms



    Jetzt lassen wir das Fenster offen, und später können wir uns daheim an den Linux Computer setzen:

    Code:


    workstation:/home/simon# last -1
    simon  pts/18   work.nat.ip Tue Aug 18 19:24   still logged in



    Passt, die Verbindung steht noch, also weiter:

    Code:


    workstation:/home/simon# mkdir work/
    workstation:/home/simon# smbmount \\127.0.0.1\blubbfishordner work/ port=123



    Tada, im Ordner /home/simon/work ist jetzt der Ordner blubbfishordner von der Arbeit gemounted.

    Hier können wir den Port ebenfalls global machen, indem wir GatewayPorts yes in der Datei /etc/sshd_config eintragen.



ssh - sshfs Top



  • FUSE
    Hier wird FUSE, und sshfs benötigt. Eine Anleitung wie man die Pakete installiert.

    Mit dem Befehl:

    Code:


    sshfs -p <port> <user>@<host>:<directory>  <mountpoint>



    wird das Verzeichnis eingebunden, wobei -p (Standard: 22), und <directory> (standard: Homeverzeichnis) optional sind.

    Damit wird das Verzeichnis wieder ausgebunden:

    Code:

    fusermount -u <mountpoint>



    Wenn dieser Fehler auftaucht:

    Code:


    fusermount: unknown option --
    Try `fusermount -h' for more information



    dann haben Sie noch eine andere Version in einem anderen Verzeichnis installiert. whereis fusermount zeigt ihnen wo sich das Programm befindet, löschen Sie das ältere.



  • Lufs
    Für sshfs brauchen sie Lufs. Laden sie es herunter und installieren Sie es. (/usr/local/lib in /etc/ld.so.conf eintragen, und ldconfig benutzen nicht vergessen)

    Ausserdem brauchen Sie ein Kernel modul: File systems -> Filesystem in Userspace support das ab dem Kernel 2.6.14 implementiert ist.

    Mit dem Befehl:

    Code:


    mount -t lufs none mountingpoing -o nosuid,fs=sshfs,host=<host>,username=<username>,port=22,fmode=444,dmode=555



    wird das Verzeichnis eingebunden. Mit umount <mountingpoint> können Sie es wieder ausbinden.



ssh - X11 forwarding Top



Mit SSH, ist eine einfache, und verschlüsselte Bildschirmübertragung möglich, das funktioniert ganz einfach: wir verbinden uns über den SSH-Client und dem Parameter -X, der SSH-Server startet einen virtuellen X-Server, und setzt DISPLAY entsprechend:

Code:


simon@workstation:/home/simon# xhost
access control enabled, only authorized clients can connect
work@workstation:/home/simon# ssh -X -l simon ssh-server
Password:
simon@vsn-server:/home/simon# nedit
simon@vsn-server:/home/simon# echo $DISPLAY
localhost:10.0
simon@vsn-server:/home/simon#  xauth
Using authority file /home/simon/.Xauthority
xauth> exit



Ich hoffe dieser Part hat einen guten Überblick über die Funktionen und features von SSH geschaffen laugh Der nächste Part wird wahrscheinlich die Themen "ssh-agent", und "ssh-server security allgemein" behandeln.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Security/Secure SSH Tutorial Part 3: Usage