[[Vorlage(Archiviert)]] {{{#!vorlage Warnung 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. }}} {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:Benno-007:] am 23.10.2016 unter '''Ubuntu 14.04''' erfolgreich getestet. }}} {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(4)]] = Problembeschreibung = 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#Reverse-VNC-Verbindung-ueber-SSH-Verbindung:] 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. = Anleitung = Im Folgenden wird der fernzusteuernde Rechner als Fremdrechner bezeichnet und der fernsteuernde Rechner als Viewer. == Programme installieren == * Fremdrechner[1]: {{{#!vorlage Befehl sudo apt-get install openssh-server x11vnc }}} * Viewer: {{{#!vorlage Befehl sudo apt-get install xtightvncviewer }}} == Portweiterleitung am DSL-Router == 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 {{{#!vorlage Befehl ifconfig }}} am Fremdrechner ermittelt: {{{ [...] inet [mark]1.2.3.4[/mark]/24 [...] }}} {{{#!vorlage Hinweis 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. }}} {{{#!vorlage Warnung 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. }}} == SSH-Verschlüsselung konfigurieren == * Schlüssel am Viewer erzeugen (Passwort optional) und zum Fremdrechner hochladen : {{{#!vorlage Befehl 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 [http://www.wieistmeineip.de 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo reload ssh}}} * Sicherheitshalber auch ein Passwort für `x11vnc` anlegen, obwohl es bereits durch SSH verschlüsselt wird: {{{#!vorlage Befehl 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. == Anwendung von VNC über SSH == === Aufbau der Verbindung === * Per SSH am Fremdrechner anmelden, falls sich noch nicht angemeldet wurde: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl x11vnc -localhost -usepw -display :0 }}} Aus Sicherheitsgründen nicht mit [:sudo:] starten! * Auf dem Viewer `vncviewer` starten: {{{#!vorlage Befehl vncviewer -via [mark]nutzer@1.2.3.4[/mark] -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". === Nutzung der Verbindung === * 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 [wikipedia:Chat:] über einen geöffneten [:Editor: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. === Beenden der Verbindung === * 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: {{{#!vorlage Befehl 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` ([:sudo:Root]-Rechte nötig) oder über VNC per gewöhnlichem grafischen [:Herunterfahren:], was ohne Befehle und ohne [:sudo:Root]-Rechte möglich ist. * Bei erneuten Starts des Fernrechners wird der [:SSH#Der-SSH-Server:SSH-Server] stets mit gestartet, wenn sein Autostart nicht deaktiviert wird: {{{#!vorlage Befehl sudo mv /etc/init/ssh.conf /etc/init/ssh.conf.deactivated }}} Zur erneuten Aktivierung einfach die beiden Pfade vertauschen: {{{#!vorlage Befehl sudo mv /etc/init/ssh.conf.deactivated /etc/init/ssh.conf }}} = Tipps = * 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:]): {{{#!vorlage Befehl sudo x11vnc -localhost -usepw -display :0 -auth /var/run/lightdm/root/:0}}} [:sudo: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 [:man:Manpage] verteilt enthalten. = Links = * [:Portweiterleitung:] * [:SSH:] * [:VNC:] * [:Howto:] {Übersicht} - Übersicht aller Howto-Artikel #tag: Howto