So richten Sie die Remotedesktopfreigabe über SSH ein

44

Gibt es eine Möglichkeit, einen Remote-Desktop über SSH anzuzeigen (und zu steuern)? Ich habe keinen physischen Zugriff auf den Remote-Host-Computer.

schrullig
quelle
vino non SSH specific: askubuntu.com/questions/4474/…
Ciro Santilli

Antworten:

51

Methode 1 :

Dies kann mit vino vnc server & remmina erreicht werden (beides wird standardmäßig mit ubuntu geliefert; wenn es nicht durch Ausführen installiert wird sudo apt-get install remmina). Führen Sie dann die folgenden Befehle vom lokalen Computer in der Terminal-Eingabeaufforderung aus:

  1. ssh -Y gman@remote. Verwenden Sie eine vertrauenswürdige X11-Weiterleitung, da dies sonst nicht funktioniert

  2. vino-preferences. Es werden Vino-Einstellungen geöffnet.

    Vino-Präferenz

  3. Klicken Sie auch auf configure network automatically to accept connection. Geben Sie jedoch kein Passwort ein, das base64-codiert ist . Klicken Sie dann auf Schließen. Dann renne:

    sudo -s
    
    export DISPLAY=:0.0
    
    xhost +
    
    /usr/lib/vino/vino-server & 
    

    Der Vino-Server wird gestartet.

  4. Abmelden vom Server:

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
    
  5. Dann öffne remmina . Wählen Sie vncunter Protokoll.

    basicTragen Sie unter Reiter die Serveradresse in das serverFeld ein.

    Klicken Sie auf der Registerkarte SSH auf enable ssh tunnel. Darunter ssh authenticationkönnte es sein passwordoder public key:

    Remmina-Präferenz

    Klicken Sie auf Speichern. Doppelklicken Sie dann auf den Verbindungsnamen (Home-Desktop wie in der Abbildung gezeigt), um den Remote-Desktop zu durchsuchen.


Methode 2:

x11vncist ein einfacher VNC-Server und Sie müssen sich nicht mit Gnome-Einstellungen oder 500 Firewalls herumschlagen. Installieren x11vncSie ihn einfach auf allen Ihren Computern (mit Marionette oder was auch immer Sie zur Massenkontrolle verwenden).

Führen Sie dann auf Ihrem lokalen Computer Folgendes aus:

ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"

Offensichtlich user@hostfür den Benutzernamen und den Hostnamen / die IP des Remote-Computers austauschen .

Verwenden Sie dann einen VNC-Client Ihrer Wahl, um eine Verbindung herzustellen localhost:5900. Der SSH-Befehl startet einen VNC-Server auf dem Remotecomputer und tunnelt dann diesen Port über SSH zurück. Sie müssen keine Ports öffnen (solange Sie bereits SSH können).

Wenn Ihre Computer über lustige Anzeigeeinstellungen verfügen, sollten Sie das -display :0Segment möglicherweise im SSH-Befehl weglassen. x11vncwird dann automatisch versuchen, das richtige Display zu finden.


Quelle: askubuntu

Khurshid Alam
quelle
Wenn Sie vncviewer mit einer langsamen ssh-Verbindung verwenden, sollte Ihr Befehl so aussehen vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(unter Debian / Ubuntu stammt der Viewer von tightvnc) oder vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(unter Red Hat / Fedora stammt der Viewer von tigervnc), wobei die Qualitätsstufe sowohl unter Debian als auch unter Redhat gleich ist zwischen 0 und 9, wobei 9 am besten ist, aber eine schnelle Verbindung benötigt.
Erik
@erik Danke, dass du erklärt hast, wie man es vncviewerfür langsame Verbindungen benutzt. Ich persönlich werde wohl einstellen, QualityLevel=4 or 5weil 0 qualitylevel(was 256 colorsich denke) mir zu langweilig ist.
Khurshid Alam
1
Ihre "Methode 2" ist perfekt für den schnellen Zugriff auf die physische Anzeige aus der Ferne ohne spezielle permanente Einstellungen. Ich musste den Parameter -auth hinzufügen, wie in der Fehlermeldung erläutert, als ich den Befehl ausgeführt habe, aber ansonsten funktioniert er einwandfrei. Vielen Dank!
Pierre
@ gerky Methode 3 wäre NoMachine, ist derzeit die schnellste und kostenlos (trotz nicht OpenSource), und arbeiten auch auf Android
Aquarius Power
1
Für Methode 2 musste ich -auth guesses als root verwenden und ausführen. Sehr hilfreich, danke!
Bob Carlson
9

Lösungsübersicht

Angenommen, Sie haben bereits eine OpenSSH Serverauf Ihrem Host-Computer eingerichtet, müssen Sie zuerst die Desktop-Steuerung auf Ihrem Host-Computer aktivieren. Wenn Sie die Desktop-Steuerung zuerst lokal auf Ihrem Host-Computer aktivieren können, fahren Sie mit Schritt 1a fort. Wenn Sie zuerst die Desktop-Steuerung auf Ihrem Host-Computer remote aktivieren müssen, fahren Sie mit Schritt 1b fort.

Erstellen Sie als Nächstes ein Remotedesktopclientprofil auf Ihrem Clientcomputer, um über einen SSH-Tunnel eine Verbindung zum Hostcomputer herzustellen und den Desktop des Hostcomputers über einen SSH-Tunnel anzuzeigen und zu steuern.

1a. Aktivieren Sie lokal die Remotesteuerung des Hostcomputers

Führen Sie auf dem Hostcomputer die folgenden Schritte aus:

vino-preferences
  • vino-preferences auch in Dash unter Desktop Sharing

Bildbeschreibung hier eingeben

  1. Tick Allow other users to view your desktop
  2. Tick Allow other users to control your desktop
  3. Tick Require the user to enter this password
  4. Geben Sie eine schwer zu erratende Passphrase ein
  5. Schließen

1b. Remoteaktivierung der Remotesteuerung des Hostcomputers

Führen Sie auf dem Client-Computer die folgenden Schritte aus, und ersetzen 123.123.12.3Sie sie durch die IP-Adresse Ihres Host-Computers:

ssh -Y 123.123.12.3
  • -Y, Aktiviert die vertrauenswürdige X11-Weiterleitung. Vertrauenswürdige X11-Weiterleitungen unterliegen nicht den X11 SECURITY-Erweiterungssteuerelementen.

vino-preferences
  • vino-preferences auch in Dash unter Desktop Sharing

Bildbeschreibung hier eingeben

  1. Tick Allow other users to view your desktop
  2. Tick Allow other users to control your desktop
  3. Tick Require the user to enter this password
  4. Geben Sie eine schwer zu erratende Passphrase ein
  5. Schließen

Erstellen Sie ein Remotedesktopclientprofil auf Ihrem Clientcomputer

Führen Sie auf dem Clientcomputer die folgenden Schritte aus:

remmina
  • Remmina auch in Dash unter Remmina Remote Desktop Client

Ctrl+ Noder Verbindung> Neu

Bildbeschreibung hier eingeben

  1. Geben Sie Ihre IP-Adresse [123.123.12.3] ein Server
  2. Wechseln Sie zur SSHRegisterkarte

Bildbeschreibung hier eingeben

  1. Tick Enable SSH Tunnel
  2. Richten Sie Ihren Desktop-Client auf Ihren nicht standardmäßigen SSH-Port
  3. Stellen Sie Ihren SSH Authentication <username>und Modus ein
  4. Verbinden

Host-Maschine anzeigen und steuern

Wenn Sie auf dem Client-Computer nach <username>dem Kennwort gefragt werden , geben Sie es ein, um den SSH-Tunnel zu erstellen. Wenn Sie nach dem VNC-Kennwort gefragt werden, geben Sie die Passphrase ein, die Sie zuvor auf dem Hostcomputer eingegeben haben.

Wenn Sie in diesem Schritt erfolgreich sind, sollten Sie jetzt den Desktop des Hostcomputers von Ihrem Clientcomputer aus über einen SSH-Tunnel anzeigen und steuern.

jtd
quelle
Dies scheint ziemlich umfassend zu sein, aber wo ist der benutzerdefinierte Port 12345 auf dem Host definiert?
John T
Ich vermute, Sie müssen irgendwo einen ssh-Befehl vom Client ausführen, etwa: ssh -L 12345: localhost: 5900 user @ server_ip, bevor Sie den Remote-Client wie beschrieben verwenden.
John T
3

Ich konnte eine neue Ubuntu 16.04-Installation von einer Remote-SSH-Verbindung mit dem folgenden Skript einrichten:

#! / bin / bash
export DISPLAY =: 0
lies -e -p "VNC Passwort:" -i "ubuntu" Passwort
dconf write / org / gnome / desktop / remote-access / enabled true
dconf write / org / gnome / desktop / remote-access / prompt-enabled false
dconf write / org / gnome / desktop / remote-access / authentifizierungsmethoden "['vnc']"
dconf write / org / gnome / desktop / fernzugriff / verschlüsselung erforderlich false
dconf write / org / gnome / desktop / fernzugriff / vnc-kennwort \ "\ '$ (echo -n $ kennwort | base64) \' \"
dconf dump / org / gnome / desktop / fernzugriff /
sudo service lightdm neu starten

Das Anführungszeichen ist wichtig für alle Zeichenfolgeneinstellungen (einzelne Häkchen in Anführungszeichen). Damit dconf schreiben kann, muss auf XWindows zugegriffen werden. Daher wird der Export-DISPLAY-Teil benötigt. Ich denke, Sie müssen noch auf dem Desktop des Ubuntu-Rechners angemeldet sein, um sich danach mit VNC verbinden zu können. Der Dump-Befehl ist nur da, um zu bestätigen, dass alle Einstellungen übernommen wurden. Das brauchen Sie nicht wirklich.

Optional können Sie dies auch tun, wenn Sie die Anzeige ständig aufrechterhalten möchten:

dconf write / org / gnome / desktop / screensaver / lock-enabled false
dconf write / org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false
dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
Integrator
quelle
2
  1. Sie können ssh verwenden, um eine vnc-Sitzung zu starten
  2. Mit XnestX11 Forwording können Sie eine Sitzung remote starten und an Ihren aktuellen Computer weiterleiten. (Das mache ich ab und zu mit meiner pi) man page

Ich benutze Xnestwie folgt:

  • Xnest :1 -ac &
  • dann DISPLAY=:1 . /etc/X11/Xsession
zurückhaltend
quelle
0

So starten Sie den Vino-Server remote, ohne X weiterzuleiten (nur über die Befehlszeile)

Melden Sie sich auf dem Remotecomputer als der Benutzer an, der seinen Desktop freigibt, und leiten Sie Port 5900 an denselben Port auf localhost weiter. Mit PuTTY wird die Umleitung in Verbindung / SSH / Tunnel eingestellt. Verwenden Sie mit einer Befehlszeile:

 ssh -L 5900:localhost:5900 user@remote-computer

Installieren Sie, vino-serverwenn es nicht bereits installiert ist. Zum Beispiel:

sudo apt install vino

Aktivieren Sie die Desktopfreigabe (entspricht der Anzeigenummer in der ersten und zweiten Zeile):

echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

Starten Sie einen VNC-Viewer und stellen Sie eine Verbindung localhostfür die VNC-Serveradresse her.

Futal
quelle
Habe folgendes. Vorausgesetzt, Sie sind bereits an einer GUI-Konsole angemeldet? No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
Algen
0

basierend auf @ Khurshid Alam Antwort präsentiere ich den folgenden Ausschnitt:

ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost

  • Es ist ein Befehl, der keine Interaktion erfordert

  • Es erstellt den SSH-Tunnel mit Portweiterleitung, startet x11vncauf relativ sichere Weise und startet und verbindet den VNC-Viewer

  • Es erfordert x11vnc auf dem Zielhost, aber keine weitere Konfiguration

  • Es erfordert vinagre auf Ihrem PC, aber Sie können es für einen anderen VNC-Projektor trivial ändern
mnagel
quelle
0

Im Server-PC.

  • Öffne 'vino-preferences' über das Terminal oder 'Desktop Sharing' mit dash.

Vino-Vorlieben

Auf dem Client-PC (von dem aus Sie die Server-Benutzeroberfläche steuern möchten).

  • Behalten Sie die Einstellungen wie in den Bildern unten gezeigt bei (mit Änderungen an der Stelle des Benutzernamens und der IP).

Registerkarte * Basic * Registerkarte * Erweitert * Registerkarte * SSH *

Fallstricke.

  • Als ich versuchte, die Vino-Einstellungen auf dem Server von einem Remote-PC mit SSH aus festzulegen, wurde sie geändert, aber die Verbindung konnte nicht hergestellt werden. Ich musste es direkt auf dem Server machen (nicht remote). Ich kenne den Grund für dieses Verhalten nicht.
vineeshvs
quelle