web-dev-qa-db-fra.com

Comment accéder à une machine Ubuntu via VNC à partir de l'écran de connexion?

Je souhaite accéder à une machine Ubuntu à distance via VNC. Mais je ne peux accéder à la machine Ubuntu que si l'utilisateur est connecté. Je souhaite accéder à la machine Ubuntu via VNC à partir de l'écran de connexion lui-même. Nous pouvons accéder à toutes les machines Windows à partir de l'écran de connexion. Cependant, nous n'avons pas pu accéder à la machine Ubuntu à partir de l'écran de connexion. Il y a un moyen mais je ne suis pas au courant des détails. Quelqu'un peut-il donner une solution à ce problème?

17
karthick87

Votre meilleur pari est d'installer xrdpInstall xrdp . Après l'installation, vous pouvez utiliser un client RDP pour vous connecter à la machine. Vous serez ensuite invité à entrer vos informations d'identification, comme vous le feriez sur l'écran de connexion.

10
Nathan Osman

Globalement, Je recommanderais x11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Entrez votre mot de passe, il est enregistré par défaut dans ~/.vnc/passwdsous forme cryptée INSECURE. Il peut être déchiffré car la clé est connue. .. protégez-la avec les autorisations du système de fichiers)

chmod 600 ~/.vnc/passwd

Enregistrer mon script d'assistance localement:

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

De votre hôte client VNC:

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

Ou, à partir de votre hôte serveur VNC, exécutez:

~/bin/start_x11vnc.sh

via un terminal (ou démarrez-le en tant que démon avec -forever en tant que service init.d , service upstart , nité systemd , ou comme vous le souhaitez )

Maintenant, lancez votre client VNC de votre choix chez votre hôte client, pointez-le à l'adresse: 127.0.0.1:5900, connectez-vous avec le mot de passe enregistré ci-dessus.

Utilisez le "Magic Cookie" X11

La plupart des gestionnaires d'affichage X (comme GDM , XDM , KDM ) commencent un X11 initial serveur et s’authentifier auprès de lui avec un cookie magique MIT . En fonction de votre gestionnaire d’affichage, le cookie magique sera présent dans l’un des emplacements suivants .

J'ai eu de la chance d'ouvrir une session VNC sur l'écran de connexion Ubuntu GDM *NOTE 1 en trouvant le cookie magique avec ce script :

#!/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

Je peux démarrer ce script (je l'ai appelé start_x11vnc.sh) à tout moment via SSH ... même avant la connexion via l'écran de connexion gdm. Il lance un serveur x11vnc auquel je peux ensuite me connecter via tunnel SSH . (Utilisez ssh -L 5900:127.0.0.1:5900 ou ajoutez LocalForward 5900 127.0.0.1:5900 à l'entrée de votre hôte dans ~/.ssh/config).

NOTE1 : dans certaines nouvelles versions de la distribution telles que Ubuntu> = 17.10, l'affichage de la session X de connexion GDM est complètement distinct de l'affichage de session X de l'utilisateur connecté. Par conséquent, il est nécessaire de se connecter d'abord à la session GDM X, de se connecter ... et enfin de se déconnecter et de se reconnecter à la session X récemment démarrée. Pourquoi ils le font maintenant de cette façon est un mystère, mais cela a cassé l'ancienne version de ce script.

5
TrinitronX

Pour activer la connexion GDM via une connexion distante ssh VNC, essayez avec X11vnc. Voir aussi cette réponse .

2
Takkat

Voici comment faire avec VNC, si vous ne voulez pas utiliser RDP:

  1. Installez le serveur X11VNC: Sudo apt-get install x11vnc (Ou via Ubuntu Software Center -> Serveur X11VNC)
  2. Définir un mot de passe:

    Sudo mkdir /etc/x11vnc
    Sudo x11vnc -storepasswd /etc/x11vnc/passwd
    

    Choisissez y pour enregistrer le mot de passe.

  3. Créez un fichier vide dans /etc/init appelé x11vnc.conf:

    Sudo -H gedit /etc/init/x11vnc.conf
    
  4. Collez ceci dans le fichier:

    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. Sauver et fermer

  6. Redémarrer Ubuntu

C'est tout! Vous devriez maintenant pouvoir vous connecter à n’importe quel client VNC même avant la connexion.

0
Didier A.

re: essayez avec X11vnc

x11vnc n'a pas été mis à jour depuis septembre 2011 !!!! Il y a des bugs connus et je suis en train de tomber par un qui déclenche une fin de pile de x11vnc chaque fois qu'un dialogue contextuel (tel qu'un clic sur le menu 'Fichier' dans une fenêtre) déconnecte la session.

Les Raspberry Pi peuvent se connecter à la session du gestionnaire de bureau sur: 0, pourquoi diable est-ce un problème pour Ubuntu?!?! Pourquoi est-il nécessaire de s’appuyer sur un programme orphelin de 7 ans pour le faire sur n’importe quel système d’exploitation moderne?

0
Scott