¿Cómo acceder a una máquina ubuntu a través de VNC desde la pantalla de inicio de sesión?

17

Quiero acceder a una máquina Ubuntu de forma remota a través de VNC. Pero solo puedo acceder a la máquina Ubuntu si el usuario ha iniciado sesión. Quiero acceder a la máquina ubuntu a través de VNC desde la pantalla de inicio de sesión. Podemos acceder a todas las máquinas Windows desde la pantalla de inicio de sesión. Sin embargo, no pudimos acceder a la máquina Ubuntu desde la pantalla de inicio de sesión. Hay alguna forma, pero no estoy al tanto de los detalles. ¿Alguien puede dar una solución a este problema?

karthick87
fuente
Si la otra máquina está en la misma LAN, sería factible usar XDMCP en lugar de VNC. Si no está en la misma LAN, la X no acelerada a través de la red puede ser demasiado lenta.
Robin Green

Respuestas:

10

Su mejor opción es instalar xrdpInstalar xrdp . Después de la instalación, puede usar un cliente RDP para conectarse a la máquina; luego se le solicitarán sus credenciales como lo haría en la pantalla de inicio de sesión.

Nathan Osman
fuente
He instalado xrdp pero aún no puedo acceder a la máquina ubuntu desde la pantalla de inicio de sesión.
karthick87
@karthick: ¿Se está conectando a la máquina con VNC o está utilizando un cliente RDP?
Nathan Osman
No encuentro el cliente RDP en mi máquina. ¿Dónde se ubicará?
karthick87
@karthick: ¿Estás usando Ubuntu como tu cliente? Si es así, el programa a usar se llama "Terminal Server Client". En Windows, se llama IIRC "Escritorio remoto".
Nathan Osman
Sí, gracias. ¿Es posible crear un lanzador para Terminal Server Client?
karthick87
5

En general, lo recomendaríax11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Ingrese su contraseña, se guarda de manera predeterminada ~/.vnc/passwd en un formulario cifrado INSECURE. Se puede descifrar porque se conoce la clave. .. protegerlo con permisos del sistema de archivos)

chmod 600 ~/.vnc/passwd

Guardar mi script de ayuda localmente:

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

Desde su host de cliente VNC:

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

O, desde el host del servidor VNC, ejecute:

~/bin/start_x11vnc.sh

a través de un terminal (o iniciarlo como un demonio con -forevercomo un servicio de init.d , servicio de advenedizo , unidad de systemd , o como se desee)

Ahora ejecute su Cliente VNC de su Cliente Host, apúntelo a:, 127.0.0.1:5900inicie sesión con la contraseña guardada anteriormente.

Utilice la "galleta mágica" X11

La mayoría de los administradores de pantallas X (como GDM , XDM , KDM ) inician un servidor X11 inicial y se autentican con una cookie mágica MIT . Dependiendo de su administrador de pantalla, la cookie mágica se encontrará en una de varias ubicaciones .

He tenido buena suerte al abrir una sesión de VNC en la pantalla de inicio de sesión de Ubuntu GDM * NOTA1 al encontrar la cookie mágica con este 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

Puedo iniciar este script (lo llamé start_x11vnc.sh) en cualquier momento a través de SSH ... incluso antes de iniciar sesión a través de la gdmpantalla de inicio de sesión. Lanza un x11vncservidor al que luego puedo conectarme a través del túnel SSH . (Use ssh -L 5900:127.0.0.1:5900o agregue LocalForward 5900 127.0.0.1:5900a la entrada de su host en ~/.ssh/config).

NOTA 1 : en algunas nuevas versiones de distribución como Ubuntu> = 17.10, la pantalla de sesión X de inicio de sesión de GDM está completamente separada de la pantalla de sesión X del usuario conectado. Por lo tanto, es necesario conectarse primero a la sesión GDM X, iniciar sesión ... y finalmente desconectarse y volver a conectarse a la sesión X recién iniciada. Por qué ahora lo hacen de esta manera es un misterio, pero rompió la versión anterior de este script.

TrinitronX
fuente
No funciona. El cliente de VNC se conecta y luego se cierra inmediatamente
Dims
@Dims Use el comando:vncviewer <remote_ip>
Gokul NC
el script se rompió para las nuevas versiones de Ubuntu ... Lo actualicé con un hack para permitir que funcione nuevamente. Parece que ahora la sesión de pantalla gdm ahora está separada de la sesión iniciada, por lo que si está utilizando este script en Ubuntu, primero lo llevará a la pantalla de inicio de sesión de GDM, luego, cuando inicie sesión, esta pantalla de sesión X se queda en blanco. Ahora debe detener el primer proceso x11vnc y volver a ejecutar el script nuevamente para volver a adjuntarlo a la sesión y pantalla X iniciada por separado.
TrinitronX
2

Para habilitar el inicio de sesión GDM a través de una conexión remota ssh de VNC, intente con X11vnc. Ver también esta respuesta .

Takkat
fuente
0

Aquí le mostramos cómo hacerlo con VNC, si no desea usar RDP:

  1. Instale el servidor X11VNC: sudo apt-get install x11vnc(O a través del Centro de software de Ubuntu -> Servidor X11VNC)
  2. Establecer una contraseña

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

    Elige yguardar la contraseña.

  3. Crear un archivo vacío en /etc/initllamadox11vnc.conf :

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. Pegue esto en el archivo:

    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. Guardar y cerrar

  6. Reiniciar Ubuntu

¡Eso es! Ahora debería poder conectarse con cualquier cliente VNC incluso antes de iniciar sesión.

Didier A.
fuente
Esto no funcionó.
maza
@mace Interesante, funcionó para mí, tal vez depende de la versión de Ubuntu. Desafortunadamente, no recuerdo qué versión tenía mi Ubuntu cuando hice este procedimiento.
Didier A.
0

re: probar con X11vnc

x11vnc no se ha actualizado desde septiembre de 2011 !!!! Hay errores conocidos y me aparece uno que desencadena una terminación smash de pila de x11vnc cada vez que un diálogo emergente (como hacer clic en el menú 'archivo' en cualquier ventana) desconecta la sesión.

Raspberry pi's se puede conectar a la sesión del administrador de escritorio en: 0, ¿por qué demonios es esto un problema para Ubuntu?!?! ¿Por qué es necesario confiar en un programa huérfano de 7 años para hacer esto en cualquier sistema operativo moderno?

Scott
fuente