Linux Desktop fernsteuern

Wer kennt das nicht, man sitzt gerade mit seinem Laptop auf dem Bett oder Sofa und schon wieder läuft gerade das falsche Lied vom Rechner in der Ecke oder der Stream ist gerade zu Ende. Schon wieder aufstehen? Nicht, wenn man den Rechner übers Netzewrk vom Laptop aus steuern kann. 🙂

Es existieren diverse Programme für den Fernzugriff auf andere Desktops. Das populärste ist wahrscheinlich TeamViewer. Das Programm ist für den Privatgebrauch kostenlos erhältlich und für alle möglichen Plattformen verfügbar, aber proprietär. Für Linux gibt es für solche Zwecke VNC und SSH, beides als freie Software-Variante, mit denen man auf entfernte Rechner zugreifen kann. Im Prinzip machen diese Programme das gleich wie Teamviewer, nur mit weniger Schnickschnack. 😉

VNC sendet das Bild des entfernten Monitors auf den eigenen Bildschirm und sendet Tastatur und Maussignale zurück auf den entfernten Rechner. Also genau das, was wir brauchen, um z.B. mal eben den Radio-Stream auf seinem Multimedia-Gerät zu wechseln ohne aufstehen zu müssen. Dazu muss auf dem Rechner auf den man zugreifen will ein VNC-Server installiert sein. In meinem Fall meinem Fall nennt sich der Server Vino und ist die VNC-Server-Variante des GNOME-Desktops. Den kann man sehr bequem, mit einigen Mausklicks konfigurieren. Einfach im Menü nach „Desktop Sharing“ suchen. Evtl. muss der Port 5900, der standardmäßig für VNC genutzt wird in der persönlichen Firewall frei gegeben werden, danach ist der Rechner für einen Fernzugriff eingerichtet.

Auf dem Client mit dem man auf den frisch eingerichteten Server zugreifen will, muss ebenfalls VNC installiert werden. Bei meinem Gentoo-Laptop fiel die Wahl auf TigerVNC. Startet man den darin enthaltenen VNCViewer, wird man nach der IP-Adresse des entfernten Rechners gefragt und nach erfolgreichem Kontakt, nach einem Passwort (oder auch nicht, je nach Server-Konfiguration). Danach sieht man den Desktop des entfernten Rechners in einem Fenster auf seinem Bildschirm. voila 🙂

Ein Nachteil von VNC sind die mangelnden Sicherheits-Features. Die Daten gehen unverschlüsselt durch das Netz. Für zwei Rechner im eigenen Netzwerk mag das gerade noch klar gehen, sobald sich dritte im Netz befinden und/oder man einen gewissen Sicherheitsstandard waren möchte, sollte man VNC unbedingt zusätzlich absichern. Für diese Zwecke bietet sich SSH an. SSH ermöglicht eine sichere Verbindung zwischen zwei Rechnern, durch die man VNC hindurchleiten kann. Dieses Vorgehen nennt man „tunneln“ oder „tunneling“.

SSH horcht standardmäßig auf Port 22. Das lässt sich in der Datei /etc/ssh/sshd_config leicht ändern, um automatisierten Angriffen von Schadsoftware vorzubeugen, falls der Rechner vom Internet aus erreichbar ist (Wer sich darauf verlässt, dass es sowas für Linux nicht gibt, ist selber schuld). In sshd_config kann man auch einstellen, ob ein Passwort benötigt wird, ob PAM unterstützt wird usw.. Näheres dazu findet man haufenweise im Netz. Wer den Port,wie in meinem Fall, auf einem Rechner mit Fedora ändern will muss SELinux dies noch mitteilen. Dazu gibt man als Root folgendes ins Terminal ein: „semanage port -a -t ssh_port_t -p tcp PORT“, wobei „PORT“ der neue SSH-Port ist. Ist SSH konfiguriert und der Daemon mittels „service sshd start“ aktiviert, kann man nun eine sichere Verbindung zu diesem Rechner aufbauen. Mit „ssh -p PORT IP.Adresse.des.Servers“ erhält man, nach erfolgreicher Authentifikation, Zugang über das Terminal auf den entfernten Rechner. PORT ist dabei der geänderte SSH-Port des Servers. Voreingestellt ist Port 22. Alles was man nun tippt, wird vom Server bearbeitet und nicht von der eigenen Maschine.

Einen SSH-Tunnel für VNC erhält man mit folgendem Befehl: „ssh -p PORT -L 5900:localhost:5900 IP.Adresse.des.Servers“. Die erste 5900 ist der eigene VNC-Port, die zweite ist der des entfernten Rechners. Nun öffnet man ein zweites Terminal, denn auf dem jetzigen befindet man sich jetzt via SSH auf dem anderen Rechner,  und startet wieder den VNCViewer. Diesmal gibt man aber die Localhost-IP als Ziel-Adresse an, also 127.0.0.1. Man verbindet sich sozusagen via VNC mit dem eigenen Rechner und wird über die SSH-Verbindung an den Port 5900 des Servers weitergeleitet. Den einizgen offenen Port, den man am Server dazu braucht, ist der für die SSH-Verbindung.

So, ab jetzt nie wieder aufstehen! 😉

PS: Es macht u.U. Sinn, den SSH-Zugriff auf dem Server zu beschränken. Hat das System einen TCP-Wrapper installiert, fügt man  folgende Zeile in die Datei, /etc/hosts.deny ein:
sshd: ALL
Jetzt werden alle Versuche via SSH anzudocken abgewiesen. Ausahmen trägt man nun in die Datei, /etc/hosts.allow ein.
Z.B.: „sshd: 192.168.10.0/255.255.255.0“ für den Adressbereich 192.168.10.1-254 eines lokalen Netzwerks.
Bei IPTables sieht das dann so aus:
iptables -A INPUT -p tcp -m state –state NEW –source 192.168.10.0/24 –dport PORT -j ACCEPT
iptables -A INPUT -p tcp –dport PORT -j DROP
PORT muss wieder mit der SSH-Portnummer ersetzt werden.

Advertisements

~ von tofuzius - August 19, 2012.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

 
%d Bloggern gefällt das: