Wie kann ich vom Anmeldebildschirm aus über VNC auf einen Ubuntu-Computer zugreifen?

17

Ich möchte remote über VNC auf einen Ubuntu-Rechner zugreifen. Ich kann jedoch nur dann auf den Ubuntu-Computer zugreifen, wenn der Benutzer angemeldet ist. Ich möchte über den Anmeldebildschirm selbst auf den Ubuntu-Computer über VNC zugreifen. Über den Anmeldebildschirm können wir auf alle Windows-Computer zugreifen. Wir konnten jedoch nicht über den Anmeldebildschirm auf den Ubuntu-Computer zugreifen. Es gibt einen Weg, aber mir sind die Details nicht bekannt. Kann jemand eine Lösung für dieses Problem geben?

karthick87
quelle
Wenn sich die andere Maschine im selben LAN befindet, ist es möglich, statt VNC nur XDMCP zu verwenden. Wenn es sich nicht im selben LAN befindet, ist nicht beschleunigtes X über das Netzwerk möglicherweise zu langsam.
Robin Green

Antworten:

10

Am besten installieren Sie xrdp Installieren Sie xrdp . Nach der Installation können Sie mit einem RDP-Client eine Verbindung zum Computer herstellen. Anschließend werden Sie wie auf dem Anmeldebildschirm zur Eingabe Ihrer Anmeldeinformationen aufgefordert.

Nathan Osman
quelle
Ich habe xrdp installiert, kann aber immer noch nicht über den Anmeldebildschirm auf den Ubuntu-Computer zugreifen.
karthick87
@ karthick: Stellen Sie mit VNC oder einem RDP-Client eine Verbindung zum Computer her?
Nathan Osman
Ich finde keinen RDP-Client auf meinem Computer. Wo wird es sich befinden?
karthick87
@karthick: Benutzt du Ubuntu als Client? In diesem Fall heißt das zu verwendende Programm "Terminal Server Client". Unter Windows heißt es "Remote Desktop" IIRC.
Nathan Osman
Ja, danke. Ist es möglich, ein Startprogramm für den Terminal Server-Client zu erstellen?
karthick87
5

Insgesamt würde ich empfehlenx11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Geben Sie Ihr Passwort ein, es wird standardmäßig ~/.vnc/passwd in INSECURE-verschlüsselter Form gespeichert. Es kann entschlüsselt werden, da der Schlüssel bekannt ist. .. mit Dateisystemrechten schützen)

chmod 600 ~/.vnc/passwd

Speichern Sie mein Hilfsskript lokal:

mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh  > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh

Von Ihrem VNC-Client-Host:

ssh -f  -L 5900:127.0.0.1:5900 -p 22 [email protected] '~/bin/start_x11vnc.sh && sleep 10'

Oder führen Sie auf Ihrem VNC Server-Host Folgendes aus:

~/bin/start_x11vnc.sh

über ein Terminal (oder starten Sie es als Daemon mit -forevereinem init.d-Dienst , einem upstart- Dienst , einer systemd-Einheit oder wie Sie möchten)

Führen Sie nun Ihren VNC-Client Ihrer Wahl von Ihrem Client-Host aus, zeigen Sie auf 127.0.0.1:5900:, melden Sie sich mit dem oben gespeicherten Passwort an.

Verwende das X11 "Magic Cookie"

Die meisten X-Display-Manager (wie GDM , XDM , KDM ) starten einen ersten X11-Server und authentifizieren sich mit einem MIT Magic Cookie . Abhängig von Ihrem Display-Manager wird das Magic Cookie an einer der verschiedenen Stellen abgelegt .

Ich hatte viel Glück, als ich eine VNC-Sitzung auf dem Ubuntu GDM-Anmeldebildschirm * NOTE1 geöffnet habe, indem ich das Magic Cookie mit diesem Skript gefunden habe :

#!/bin/bash
DEFAULT_DISPLAY=:0
X11VNC_DISPLAY="$DEFAULT_DISPLAY"

if [ -x /usr/bin/x11vnc ]; then
     [ "$1" == '-nocache' ] && CACHE_FLAG='-noncache' || CACHE_FLAG='-noncache'
     [ "$2" == '-guess' ] && GUESS_FLAG='-auth guess' || GUESS_FLAG=''
         [ -f /root/.vnc/passwd ] && PASSWORD="/root/.vnc/passwd"
         [ -f $HOME/.vnc/passwd ] && PASSWORD="$HOME/.vnc/passwd"
         [ ! -z "$PASSWORD" ] && x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage
    EXIT_CODE=$?
     if [ $EXIT_CODE -ne 0 ]; then

        echo "\n*********************************************************************"
        echo "*** Could not start x11vnc!  Trying again with gdm MAGIC_COOKIE! ***"
        echo "*********************************************************************\n"

        # Old GDM location for Ubuntu <= 17.10
        MAGIC_COOKIE_FILE=`sudo find /var/run/gdm/ -iname database | grep for-gdm`

        # New GDM location for Ubuntu >= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && NUM_MAGIC_COOKIE_FILE_SESSIONS=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' 2>/dev/null | wc -l`
        if [ -z "$MAGIC_COOKIE_FILE" -a "$NUM_MAGIC_COOKIE_FILE_SESSIONS" -gt 1 ]; then
            # Find the current user's session
            MAGIC_COOKIE_FILE=`sudo find /run/user/$(id -u) -iwholename '*/gdm/*' -iname '*Xauthority'`
            X11VNC_DISPLAY=":1"
        else
            # Find the GDM user's session (or whichever shows up first in ps list)
            # This should pick up the original gdm session which grabs :0
            # If you login after gdm login screen, your Xorg server may end up on another display!
            # Workaround for now is to restart x11vnc on that display number
            [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' | head -n1`
        fi
        # Old lightdm location for Ubuntu <= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /var/lib -name '.Xauthority' -o -wholename '/var/run/lightdm/root/:0' | head -n1`
        #sudo bash -c "[ -z \"$MAGIC_COOKIE_FILE\" -a -e /var/run/lightdm/root/:0 ]" && MAGIC_COOKIE_FILE='/var/run/lightdm/root/:0'
        [ -n "$MAGIC_COOKIE_FILE" -a -z "$GUESS_FLAG" ] && AUTH_COOKIE_FLAG="-auth $MAGIC_COOKIE_FILE"
        [ ! -z "$PASSWORD" ] && sudo x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage ${AUTH_COOKIE_FLAG}
    fi
fi

Ich kann dieses Skript (ich habe es genannt start_x11vnc.sh) jederzeit über SSH starten ... noch bevor ich mich über den gdmAnmeldebildschirm anmelde. Es startet einen x11vncServer, mit dem ich mich dann über einen SSH-Tunnel verbinden kann . (Verwenden ssh -L 5900:127.0.0.1:5900oder ergänzen LocalForward 5900 127.0.0.1:5900Sie den Eintrag Ihres Gastgebers in ~/.ssh/config).

HINWEIS 1 : In einigen neuen Distributionen wie Ubuntu> = 17.10 ist die Anzeige der GDM Login X-Sitzung von der Anzeige der X-Sitzung des angemeldeten Benutzers völlig getrennt. Daher ist es erforderlich, zuerst eine Verbindung zur GDM X-Sitzung herzustellen, sich anzumelden und schließlich die Verbindung zur neu gestarteten X-Sitzung zu trennen und erneut herzustellen. Warum sie es jetzt so machen, ist ein Rätsel, aber es hat die alte Version dieses Skripts zerstört.

TrinitronX
quelle
Funktioniert nicht. Der VNC-Client stellt eine Verbindung her und wird sofort geschlossen
Dims
@Dims Verwenden Sie den Befehl:vncviewer <remote_ip>
Gokul NC
Skript wurde für neue Versionen von Ubuntu gebrochen ... Ich habe es mit einem Hack aktualisiert, damit es wieder funktioniert. Es sieht so aus, als ob die GDM-Anzeigesitzung jetzt von der angemeldeten Sitzung getrennt ist. Wenn Sie dieses Skript unter Ubuntu verwenden, werden Sie zuerst zum GDM-Anmeldebildschirm weitergeleitet. Wenn Sie sich dann anmelden, wird diese X-Sitzungsanzeige leer. Jetzt müssen Sie den ersten x11vnc-Prozess stoppen und das Skript erneut ausführen, um eine neue Verbindung zu der separaten angemeldeten X-Sitzung und -Anzeige herzustellen.
TrinitronX
2

Um die GDM-Anmeldung über eine VNC-SSH-Remoteverbindung zu aktivieren, versuchen Sie es mit X11vnc. Siehe auch diese Antwort .

Takkat
quelle
0

So geht's mit VNC, wenn Sie RDP nicht verwenden möchten:

  1. Installieren Sie den X11VNC-Server: sudo apt-get install x11vnc(Oder über Ubuntu Software Center -> X11VNC Server)
  2. Setze ein Passwort:

    sudo mkdir /etc/x11vnc
    sudo x11vnc -storepasswd /etc/x11vnc/passwd
    

    Wählen Sie y, um das Passwort zu speichern.

  3. Erstellen Sie eine leere Datei mit dem /etc/initNamen x11vnc.conf:

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. Fügen Sie dies in die Datei ein:

    start on login-session-start
    
    exec x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -bg -o /var/log/x11vnc.log
    
  5. Speichern und schließen

  6. Ubuntu neu starten

Das ist es! Sie sollten jetzt in der Lage sein, sich bereits vor der Anmeldung mit einem beliebigen VNC-Client zu verbinden.

Didier A.
quelle
Das hat nicht funktioniert.
Streitkolben
@mace Interessanterweise hat es bei mir funktioniert, vielleicht hängt es von der Ubuntu-Version ab. Leider kann ich mich nicht erinnern, welche Version mein Ubuntu hatte, als ich diesen Vorgang durchgeführt hatte.
Didier A.
0

re: versuche es mit X11vnc

x11vnc wurde seit September 2011 nicht mehr aktualisiert !!!! Es sind Fehler bekannt, und ich erhalte einen Fehler, der bei jedem Popup-Dialogfeld (z. B. beim Klicken auf das Menü 'Datei' in einem beliebigen Fenster) eine Stapel-Smash-Beendigung von x11vnc auslöst, wodurch die Sitzung getrennt wird.

Himbeer-Pi kann sich mit der Desktop-Manager-Sitzung verbinden unter: 0, warum zum Teufel ist das ein solches Problem für Ubuntu?!?! Warum muss man sich auf ein verwaistes, 7 Jahre altes Programm verlassen, um dies auf einem modernen Betriebssystem zu tun?

Scott
quelle