SSH Werkzeuge

Aus LOMSO
Zur Navigation springen Zur Suche springen
Du bist hier : Wiki home -> Events -> Linuxeinsteiger -> SSH Werkzeuge



SSH Werkzeuge

Zur Einführung in SSH siehe:

SSH Simple

SSH Spickzettel


Einfache Terminalverbindung

Mit

$ ssh benutzer@IP-Adresse

bekommt man auf dem PC mit der IP-Adresse eine Terminalsitzung. Man hat dort die gleichen Rechte wie der benutzer.

Mit

$ ssh  -X -C benutzer@IP-Adresse

bekommt man ein Terminal. Mit -X können zusätzlich grafische Ausgaben übertragen werden und -C komprimiert die Daten.

Startet man jetzt auf dem entfernten PC z.B. den Firefox mit:

$ firefox

dann wird der Firefox auf dem anderen PC gestartet, die Ausgabe wird in ein Fenster auf meinem PC, an dem ich sitze, umgeleitet.

Das funktioniert durch das X-Windows-System mit jedem grafischen Programm. Man kann über SSH den entfernten PC so benutzen, als wäre man vor Ort. Auch die grafischen Ausgaben, hier vom Firefox, werden von SSH verschlüsselt übertragen.

Verbindung über einen Filemanager

Die Filemanager von GNOME (Pacman, Nautilus) und KDE (Dolphin, Konqueror) können mit SSH umgehen. Man gibt in die Adresszeile als Protokoll

$ ssh://benutzer@IP-Adresse

ein.

Im Konqueror muss man statt ssh fish eingeben. Jetzt bekommen wir kein Terminal, sondern ein Fenster im Filemanager. Alles was man mit dem Filemanager am lokalen PC erledigen kann, funktioniert auch im Fenster des entfernten PC, so, als wäre der PC vor Ort.

Files kopieren, verschieben, ansehen, usw.

Immer dabei berücksichtigen, dass dabei der Datenverkehr über das SSH-Netz im Internet geht. D.h. das Kopieren grosser Files kann länger dauern. Die Bildvorschau ist aus Performancegründen abgeschaltet. Entscheidend ist beim Kopieren über das Internet die Upload-Rate des PC und nicht die mögliche Download-Rate des eigenen PC. Bei privaten Internetverbindungen ist die Upload-Rate oft sehr gering.

SSH-Tunnel

Jetzt wird es komplizierter.

Um den entfernten Desktop-Zugriff abzusichern, benötigen wir einen Tunnel, der Daten des Desktop (Port 5900) sicher über Port 22 überträgt.

Remote Desktop

Hier wird nur der spezielle Fall des Ports 5900 betrachtet.

Hintergründe zum Tunnelbau findet man in der Wikipedia:

http://de.wikipedia.org/wiki/Tunnel_%28Rechnernetz%29


Mit

$ ssh -L 5906:localhost:5900 benutzer@IP-Adresse

am eigenen PC wird ein SSH-Tunnel vom entfernten PC zum eigenen PC aufgebaut. Zusätzlich wird noch ein Terminal zugewiesen.

Was passiert hier im Hintergrund: Alle Daten vom Port 5900 des entfernten PC, dem Server, werden über den SSH-Port 22 verschlüsselt zum Port 5906 meines PC übertragen. D.h. am Port 5906 meines PC (!) stehen die Daten des entfernten Desktop des anderen PC zur Verfügung.

Ein Desktop-Betrachter (z.B. vncviewer) benötigt jetzt keinen Zugriff auf das Internet mehr, um den entfernten Desktop anzuzeigen.

Alle nötigen Daten werden durch SSH auf dem lokalen PC zur Verfügung gestellt.

Mit

$ vncviewer :6

auf meinem PC kann man den Desktop des entfernten PC anzeigen.

:6 ist der Offset zu 5900.

Mit verschiedenen Offsets kann man gleichzeitig den Desktop von mehreren entfernten PCs anzeigen und steuern.z.B.:

$ ssh -L 5904:localhost:5900 benutzer2@andere-IP-Adresse

und

$ vncviewer :4

Aufpassen, dass man immer die Kontrolle darüber behält, in welchem Fenster welcher PC zu sehen ist. ;-)


Skripte

Skript: terminal.sh

#!/bin/bash
# Autor:  Richard
# Terminalverbindung zu einem remote PC mit  ssh
SSHUSER=remoteUser
SSHHOST=remotePC
SSHURL=$SSHUSER@$SSHHOST
echo  "Verbinde mit ssh -X -C $SSHURL"
ssh -X -C $SSHURL

Aufbau einer SSH Verbindung mit dem Terminal.

Unter

SSHUSER=remoteUser
SSHHOST=remotePC

ist der Benutzer und die IP-Adresse des entfernten PC einzutragen.

Skript: tunnel.sh

#!/bin/bash
SSHUSER=remoteUser
SSHHOST=remotePC
SSHURL=$SSHUSER@$SSHHOST
echo  "Desktop Tunnel fuer Remote-Desktop mit: ssh -L 5906:localhost:5900  $SSHURL"
ssh -L 5906:localhost:5900 $SSHURL

Aufbau eines Tunnels, wie beschrieben.

Script: syncremote.sh

#!/bin/bash
# lokaler Backupfolder =  backup
# lokaler Folder für gelöschte files = backup_save
rsync --delete  -avzbe ssh remoteUser@host:/home/remoteUser backup  --backup-dir=backup_save
#echo "sync done"

Beispiel, wie man mit SSH die Daten eines Benutzers auf dem entfernten PC über das Internet auf dem eigenen PC sichern kann

(kann lange dauern, Upload-Problem, s.o. bei File Manager)

Skript: fuse.sh

#!/bin/bash
# sshfs  muss installiert sein
# das Script muss in dem Folder aufgerufen werden,  in dem auch der lokale Folder liegt
# oder entsprechend anpassen
echo  "Verbinde mit sshfs "
sshfs remoteUser@host:/home/remoteUser  lokalerFolder

Mit FUSE kann man ein ganzes Filesystem eines entfernten PC in das Filesystem des eigenen PC einbinden.

Damit können die Daten des anderen PC so genutzt werden, als wären sie lokal.

Programme, die diese Daten verarbeiten, brauchen keine Kenntnis von SSH und müssen auch nicht netzwerkfähig sein.

FUSE in der Wikipedia

Skript: ufuse.sh

#!/bin/bash
#echo "Trenne sshfs  Verbindung mit fusermount -u lokalerFolder"
fusermount -u  lokalerFolder

löst die Verbindung von FUSE mit 'lokalerFolder'.