Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
Diese Howto-Anleitung wurde zuletzt von Benno-007 am 23.10.2016 unter Ubuntu 14.04 erfolgreich getestet.
Ein Ubuntu-Rechner soll mit einem anderen Ubuntu-Rechner ferngesteuert werden, um beispielsweise jemandem zu helfen, etwas zu zeigen oder seinen eigenen Rechner mit seinen Programmen und Daten mobil erreichen zu können. Dabei ist die Verbindung zu verschlüsseln, wofür SSH mit einem SSH-Schlüssel genutzt wird. Um Computer hinter einem DSL-Router zu erreichen, ist die Einrichtung einer Portweiterleitung nötig.
Eine Variante ohne Portweiterleitung beim Hilfesuchenden wird im Artikel VNC beschrieben. Das wird dadurch erreicht, dass der Helfer bei sich selbst eine Portweiterleitung einrichtet und seinen Rechner freigibt, indem sich der Hilfesuchende beim Helfer einloggt. Bei beiden Varianten sollte ein gewisses Vertrauensverhältnis zwischen den Nutzern vorliegen, welches nicht einfach durch eine Forenbekanntschaft, sondern etwa in realer Freundschaft oder Familie begründet ist. Fernsteuerungsverfahren sind vorwiegend in Ausnahmefällen bei interfamiliärem oder firmeninternem Support vorgesehen, wenn man sie nicht für sich allein nutzen möchte.
Im Folgenden wird der fernzusteuernde Rechner als Fremdrechner bezeichnet und der fernsteuernde Rechner als Viewer.
Fremdrechner[1]:
sudo apt-get install openssh-server x11vnc
Viewer:
sudo apt-get install xtightvncviewer
Zunächst muss Port 22 im DSL-Router des Fremdrechners an die interne IP des des Fremdrechners weitergeleitet werden. Das konkrete Vorgehen ist abhängig vom Menü des Routers und wird allgemein im Artikel Portweiterleitung beschrieben. Das Ergebnis könnte dann beispielsweise ungefähr so aussehen:
Anwendung | Von Port | Protokoll | IP-Adresse | Port | Einschalten |
SSH | 22 | TCP | (interne IP eintragen) | 22 | (Haken zur Aktivierung setzen) |
Die einzutragende interne IP des Fremdrechners wird mit
ifconfig
am Fremdrechner ermittelt:
[...] inet 1.2.3.4/24 [...]
Diese IP-Adresse kann sich ändern, wenn mehr als ein Gerät im lokalen Netzwerk vernetzt ist. Aufgrund der Einfachheit wird hier auf eine Bindung der MAC-Adresse an eine bestimmte IP verzichtet, um das zu umgehen. Stattdessen ist dafür Sorge zu tragen, dass im Fernsteuerungsfall die richtige IP im Router eingetragen ist oder z.B. nur ein Gerät im Netzwerk ist bzw. sich zuerst anmeldet, um etwa immer die erste IP zu bekommen, die der Router vergibt.
Sollten im lokalen Netzwerk weitere Serverdienste auf einem Port 22 laufen (auf Port 22 üblicherweise nur SSH), so ist darauf zu achten, dass entweder
nicht auf die IP des falschen Server weitergeleitet wird
oder dieses Gerät temporär ohne diesen Server oder gar nicht betrieben wird
oder dass dieser Server (SSH, evtl. Dateifreigaben auf Port 22 fehlkonfiguriert etc.) entsprechend gegenüber dem Internet abgesichert ist, z.B. mit einem SSH-Key wie in diesem Howto beschrieben oder einem sehr, sehr starken Passwort.
Schlüssel am Viewer erzeugen (Passwort optional) und zum Fremdrechner hochladen :
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub nutzer@1.2.3.4
Es folgt die Anmeldung am Fremdrechner per ssh. Hierfür braucht man Nutzername und Passwort des Nutzers am Fremdrechner. Beispielhaft steht hier die IP 1.2.3.4 - eingesetzt werden muss die IP des Fremdrechners, die sich dort am einfachsten von der zu supportenden Person über Wieistmeineip.de anzeigen lässt.
Nun lässt sich erstmals mit Zertifkat anmelden, mit dessen Passwort oder ohne, falls dafür keines vergeben wurde. SSH-Server auf Fremdrechner nun etwas nachkonfigurieren und aus Sicherheitsgründen root sowie den nun nicht mehr benötigten und unsichereren Passwortzugang deaktivieren. Dazu am Fremdrechner anmelden und die Konfigurationsdatei des SSH-Servers öffnen:
ssh nutzer@1.2.3.4 sudo nano /etc/ssh/sshd_config
In dieser Textdatei folgende Werte überprüfen:
PermitRootLogin no PasswordAuthentication no UsePAM no
Mit F3 und Enter speichern, mit F2 verlassen. Neustart von SSH, damit die Änderungen sofort wirksam werden:
sudo reload ssh
Sicherheitshalber auch ein Passwort für x11vnc
anlegen, obwohl es bereits durch SSH verschlüsselt wird:
x11vnc -storepasswd
Die Konfiguration ist nun abgeschlossen. Man kann sich nun mit exit
vom Fremdrechner abmelden oder für die Anwendung mit grafischem VNC in der verschlüsselten SSH angemeldet bleiben.
Per SSH am Fremdrechner anmelden, falls sich noch nicht angemeldet wurde:
ssh nutzer@1.2.3.4
Hierfür braucht man Nutzername und ein ggf. vergebenes Passwort des eben neu angelegten Zertifikats des Nutzers am Fremdrechner, der ferngesteuert werden soll. Es muss sich dabei nun nicht mehr um das Passwort des Nutzers des Fremdrechners handeln, da das Passwort des Zertifikates damit nichts zu tun hat.
Auf Fremdrechner x11vnc
starten:
x11vnc -localhost -usepw -display :0
Aus Sicherheitsgründen nicht mit sudo starten!
Auf dem Viewer vncviewer
starten:
vncviewer -via nutzer@1.2.3.4 -compresslevel 9 localhost:0
Nur das gelb Markierte muss wieder mit den zum Fremdrechner zugehörigen Daten angepasst werden, localhost
am Ende dagegen muss stehenbleiben, denn über SSH ist man auch auf dem entfernten Rechner "lokal".
Es sollte sich dann ein Fenster öffnen, auf dem der gesamte Desktop des fremden Rechners sichtbar ist. Eventuell muss dabei durch Links- oder Rechtsklicks auf horizontale oder vertikale Scrollbalken des VNC-Viewers etwas gescrollt werden, wenn der fernzusteuernde Rechner eine höhere Bildschirmauflösung bzw. einen größeren Bildschirm hat. Der fremde Nutzer muss bereits eingeloggt sein, eine bestehende Bildschirmsperre ist dagegen kein technisches Hindernis, wenn man das Passwort des Nutzers kennt.
Nun kann man das fremde System fern- bzw. gemeinsam steuern, solange man es benötigt. Zur Kommunikation miteinander bietet sich ein Chat über einen geöffneten Texteditor auf dem Fremdrechner an, in dem beide Nutzer abwechselnd schreiben können und sich in die gemeinsame Nutzung der Tastatur(en) einteilen, indem man den anderen jeweils bis zu einem abgesprochenen neuen Stichpunkt-Strich oder Stichwort ausschreiben lässt.
Wenn man seine Aktivitäten beenden möchte, schließt der fernsteuernde Nutzer das VNC-Fenster. Die dann noch bestehende SSH-Verbindung kann er durch exit
verlassen.
Die ferngesteuerte Person kann die Verbindung ebenfalls durch ein Beenden des SSH-Servers erzwingen, was jedoch nicht nötig ist:
sudo ssh stop
Man kann auch der ferngesteuerten Person sagen, dass man den PC nach Support später selbst herunterfährt, per sudo shutdown -h now
(Root-Rechte nötig) oder über VNC per gewöhnlichem grafischen Herunterfahren, was ohne Befehle und ohne Root-Rechte möglich ist.
Bei erneuten Starts des Fernrechners wird der SSH-Server stets mit gestartet, wenn sein Autostart nicht deaktiviert wird:
sudo mv /etc/init/ssh.conf /etc/init/ssh.conf.deactivated
Zur erneuten Aktivierung einfach die beiden Pfade vertauschen:
sudo mv /etc/init/ssh.conf.deactivated /etc/init/ssh.conf
Auflösung: Bei x11vnc
als auch (tight)vncserver
kann man mit -geometry
noch die Größe des VNC-Viewers beeinflussen, z.B. mit 1600x900
. Bei x11vnc
kann man eine leichte Vergrößerung auch durch Werte größer 1 erreichen, kleiner 1 verkleinert dagegen. Beispiel für geringfügige Vergrößerung: -geometry 1.04
.
Anmeldung am Loginscreen (bei LightDM):
sudo x11vnc -localhost -usepw -display :0 -auth /var/run/lightdm/root/:0
Root-Rechte sind im Gegensatz zur Anmeldung bei einem bereits eingeloggten Benutzer nötig.
Es fallen insbesondere bei bewegten Bildern größere Datenmengen an. Weitere Optimierungen der Geschwindigkeit bzw. des verbrauchten Volumens der Verbindung sind in der Manpage verteilt enthalten.
Diese Revision wurde am 23. Oktober 2016 22:44 von Benno-007 erstellt.