Fernwartung

Aus Mikiwiki
Version vom 15. Juli 2009, 18:13 Uhr von Michi (Diskussion | Beiträge) (Beispielkonfiguration)
Wechseln zu: Navigation, Suche

Als Fernwartung (auch: Remote-Support) wird der Fernzugriff von technischem Personal auf Systeme zu Wartungs- und Reparaturzwecken. Neben Telefon- und Industrieanlagen werden zunehmend auch Rechner aus der Ferne gewartet.

Konfiguration

Einer der häufigsten Hinderungsgründe für Fernwartung liegt in den NAT-Routern, hinter denen sich inzwischen viele Rechner verbergen. Diese verhindern den direkten Zugriff auf den entfernten Rechner, selbst wenn die IP-Adresse bekannt wäre. Die folgende Rechnernetzstruktur zeigt einen Rechner hinter einem Router mit Firewall und bildet das in privaten Haushalten übliche Szenario ab.

|-------------|       |------------------|                      |------------|       |-------------|
| Rechner des | ----- | NAT-Router       | ----- INTERNET ----- | NAT-Router | ----- | Rechner des |
| Technikers  |       | (IP-Adresse über |                      |------------|       | Benutzers   |
|-------------|       | Dyndns bekannt)  |                                           |-------------|
                      |------------------|

Die Fernwartung ist in folgender Art möglich:

  • Auf dem Rechner des Benutzers wird ein VNC-Server aktiviert.
  • Vom Rechner des Benutzers aus wird ein Reverse-SSH-Tunnel zum Rechner des Technikers aufgebaut und somit der Port, auf dem der VNC-Server lauscht, auf den Rechner des Technikers umgeleitet.
  • Herstellung einer Verbindung mit dem VNC-Client-Server, sodass der Rechner des Benutzers gesteuert werden kann.

In einem ersten Schritt wird dabei die SSH-Verbindung aufgebaut:

|-------------|       |------------------|                      |------------|       |-------------|
| Rechner des | ----- | NAT-Router       | ----- INTERNET ----- | NAT-Router | ----- | Rechner des |
| Technikers  |       | (IP-Adresse über |                      |------------|       | Benutzers   |
|-------------|       | Dyndns bekannt)  |                                           |-------------|
                      |------------------|

      Router leitet  <--------             <----- Shellskript baut SSH-Tunnel zur Dyndns-Adresse auf
      Anfrage weiter 

im zweiten Schritt wird der Reverse-SSH-Tunnel aufgebaut:

|-------------|       |------------------|                      |------------|       |-------------|
| Rechner des | ----- | NAT-Router       | ----- INTERNET ----- | NAT-Router | ----- | Rechner des |
| Technikers  |       | (IP-Adresse über |                      |------------|       | Benutzers   |
|-------------|       | Dyndns bekannt)  |                                           |-------------|
                      |------------------|

      Router leitet  <--------             <----- Shellskript baut SSH-Tunnel zur Dyndns-Adresse auf
      Anfrage weiter

  ---------- Port 10823 auf dem Rechner des Technikers wird über die SSH-Verbindung auf -------->
             Port 5900 des Benutzers weitergeleitet


Auf dem Rechner des Benutzers sind dazu erforderlich:

  • ein VNC-Server (z. B. Vino unter Gnome oder KRFB bzw. KRDC unter KDE).
  • ein SSH-Client (am besten ssh).
  • ein Shellskript, das den VNC-Server und den SSH-Client richtig konfiguriert.

Auf dem Rechner des Technikers sind erforderlich:

  • ein VNC-Client.
  • ein SSH-Server.
  • eine bekannte (nicht unbedingt feste) IP-Adresse.

Beispielkonfiguration

  1. Der Techniker konfiguriert sein Rechnernetz so, dass der SSH-Client des Benutzers eine Verbindung herstellen kann.
    1. Ermittlung der öffentlichen IP-Adresse des Rechners des Technikers (z. B. über http://checkip.dyndns.org/)
    2. Praktisch ist auch ein Dyndns-Konto. Dann kommt im folgenden Shellskript anstelle der ermittelten IP-Adresse die Dyndns-URL zum Einsatz, sodass das Skript nicht jedesmal neu erstellt werden muss. Im Beispiel wird angenommen, dass das Dyndns-Konto "techniker.dyndns.org" zur Verfügung steht.
  2. Die Konfiguration des Routers des Technikers wird so geändert, dass dieser den Port 22 auf den Port 22 des Rechners des Technikers weiterleitet. Je nach Router kann diese Einstellung "Portforwarding", "Exposed Host" oder "Virtual Server" heissen.
  3. Konfiguration des Rechners des Technikers.
    1. Installation eines SSH-Servers, am besten Openssh.
    2. Benutzerkonto zur Verwendung des Reverse-SSH-Tunnels.
    3. Installation eines VNC-Clients.
    4. Konfiguration des SSH-Servers, der Benutzer anhand eines Public Keys identifizieren können muss.
      1. Anpassung der Datei "/etc/ssh/sshd_config", wo die Variable "PubkeyAuthentication yes" gesetzt werden muss.
      2. Neustart des SSH-Servers mittels "sudo etc/init.d/ssh restart".
    5. Erstellen des Benutzers "remotesupport" mittels "sudo useradd -m -d /home/remotesupport -s /bin/false remotesupport".
    6. Erstellen des Passworts für Benutzer "remotesupport" mittels "sudo passwd -l remotesupport".
    7. Erzeugen eines Schlüsselpaars für den Zugang durch Aufruf von "ssh-keygen" als Benutzer "remotesupport".
    8. Damit der SSH-Server den Schlüssel erkennt, wird als Benutzer "remotesupport" der Befehl "cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys" ausgeführt.
  4. Konfiguration des Rechners des Benutzers; hier werden nur temporär einige Parameter umgestellt. Das Umstellen könnte auch der Benutzere selbst erledigen, dabei können sich jedoch Fehler einschleichen, weswegen ein Shellskript dafür besser geeignet ist. Das Shellskript sorgt für den Aufbau des SSH-Tunnels. Dazu muss sich der SSH-Client ohne Passwort und ohne weiteres Zutun am Rechner des Technikers anmelden können, um einen Reverse-SSH-Tunnel zu öffnen.
    1. Der Befehl für den Reverse-SSH-Tunnel lautet wie folgt. Mit dem Schalter "-R" bittet der SSH-Client dabei beim SSH-Server um eine Weiterleitung. Der SSH-Server lauscht dann auf Port 10823 und leitet alle Daten, welche der SSH-Client dorthin schreibt, durch den SSH-Tunnel zum Port 5900 des Rechners des Benutzers weiter - damit gelangen später die Anfragen vom VNC-Client des Technikers an den VNC-Server des Benutzers. Der zweite Schalter "-R" baut zusätzlich einen zweiten SSH-Tunnel auf, welcher den Port 10285 auf den allenfalls vorhandenen SSH-Server (Port 22) des Rechners des Benutzers weiterleitet.
$ ssh -i $PREFIX/privatekey -N remotesupport@techniker.dyndns.org -R 10823:localhost:5900 -R 10285:localhost:22
    1. Test

Weblinks

Vorlage:Weblinks1