SSH Werkzeuge
Du bist hier : | Wiki home -> Events -> Linuxeinsteiger -> SSH Werkzeuge |
SSH Werkzeuge
Zur Einführung in SSH siehe:
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.
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.
Skript: ufuse.sh
#!/bin/bash #echo "Trenne sshfs Verbindung mit fusermount -u lokalerFolder" fusermount -u lokalerFolder
löst die Verbindung von FUSE mit 'lokalerFolder'.