it-swarm.com.de

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

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?

17
karthick87

Am besten installieren Sie xrdpInstall 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.

10
Nathan Osman

Insgesamt würde ich empfehlen, x11vnc .

TL; DR

_apt-get -y install x11vnc
x11vnc -storepasswd
_

Geben Sie Ihr Passwort ein, es wird standardmäßig in _~/.vnc/passwd_ gespeichert in INSECURE-verschlüsselter Form. Es kann entschlüsselt werden, da der Schlüssel bekannt ist. .. mit Dateisystemberechtigungen 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 _-forever_ als init.d service , upstart service , systemd unit oder wie Sie es wünschen)

Führen Sie nun Ihren VNC-Client Ihrer Wahl von Ihrem Client-Host aus, und zeigen Sie auf: _127.0.0.1:5900_. Melden Sie sich mit dem oben gespeicherten Kennwort an.

Verwende das X11 "Magic Cookie"

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

Ich hatte viel Glück, dass eine VNC-Sitzung auf dem Ubuntu GDM-Anmeldebildschirm geöffnet wurde *ANMERKUNG 1 indem Sie das Magic Cookie mit this script finden:

_#!/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 _start_x11vnc.sh_ genannt) jederzeit über SSH starten ... noch bevor ich mich über den Anmeldebildschirm gdm anmelde. Es startet einen _x11vnc_ Server, mit dem ich mich dann über SSH tunnel verbinden kann. (Verwenden Sie _ssh -L 5900:127.0.0.1:5900_ oder fügen Sie _LocalForward 5900 127.0.0.1:5900_ zum Eintrag Ihres Hosts in _~/.ssh/config_ hinzu.).

HINWEIS1 : 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.

5
TrinitronX

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

2
Takkat

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 in /etc/init mit dem Namen 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.

0
Didier A.

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) zum Beenden der Sitzung führt.

Raspberry 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?

0
Scott