Quiero acceder a una máquina Ubuntu de forma remota a través de VNC. Pero sólo puedo acceder a la máquina Ubuntu si el usuario ha iniciado la sesión. Quiero acceder a la máquina de Ubuntu a través de VNC desde la propia 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 podemos acceder a la máquina Ubuntu desde la pantalla de inicio de sesión. Hay alguna manera, pero no estoy al tanto de los detalles. ¿Puede alguien dar una solución a este problema?
Respuestas
¿Demasiados anuncios?Su mejor opción es instalar xrdp . Después de la instalación, puede utilizar un cliente RDP para conectarse a la máquina - entonces se le pedirán sus credenciales como lo haría en la pantalla de inicio de sesión.
En general, Yo recomendaría x11vnc
.
TL;DR
apt-get -y install x11vnc
x11vnc -storepasswd
Introduzca su contraseña, que se guarda por defecto en ~/.vnc/passwd
en forma encriptada INSEGURA. Se puede descifrar porque se conoce la clave. protegerlo con los permisos del sistema de archivos)
chmod 600 ~/.vnc/passwd
Guarda mi ayudante script 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 el host del cliente VNC:
ssh -f -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'
O bien, desde su servidor VNC, ejecute :
~/bin/start_x11vnc.sh
a través de un terminal (o iniciarlo como demonio con -forever
como servicio init.d , servicio upstart , unidad systemd o como quiera)
Ahora ejecute el cliente VNC de su elección desde su host de cliente, apunte a: 127.0.0.1:5900
, inicie sesión con la contraseña guardada anteriormente.
Utiliza la "galleta mágica" de X11
La mayoría X gestores de pantalla (como GDM , XDM , KDM ) iniciar un servidor X11 inicial y autenticar a la misma con un Galleta mágica del MIT . Dependiendo de su gestor de pantalla, la cookie mágica será se encuentra en uno de los distintos lugares .
He tenido buena suerte consiguiendo abrir una sesión VNC en la pantalla de inicio de sesión de Ubuntu GDM *NOTA1 encontrando la galleta 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 he llamado start_x11vnc.sh
) en cualquier momento a través de SSH... incluso antes de iniciar sesión a través del gdm
pantalla de inicio de sesión. Se lanza un x11vnc
servidor al que me puedo conectar a través de Túnel SSH . (Utilizar ssh -L 5900:127.0.0.1:5900
o añadir LocalForward 5900 127.0.0.1:5900
a la entrada de su anfitrión en ~/.ssh/config
).
NOTA1 : En algunas nuevas versiones de distro como Ubuntu >= 17.10, la pantalla de la sesión X de inicio de sesión de GDM está completamente separada de la pantalla de la sesión X del usuario conectado. Por lo tanto, es necesario conectarse primero a la sesión X de GDM, iniciar la sesión... y finalmente desconectarse y volver a conectarse a la sesión X recién iniciada. Por qué lo hacen ahora de esta manera es un misterio, pero rompió la antigua versión de este script.
Para habilitar el inicio de sesión de GDM a través de una conexión remota VNC ssh prueba con X11vnc. Ver también esta respuesta .
Aquí se explica cómo hacerlo con VNC, si no quieres usar RDP:
-
Instalar el servidor X11VNC :
sudo apt-get install x11vnc
(O a través del Centro de Software de Ubuntu -> Servidor X11VNC) -
Establezca una contraseña:
sudo mkdir /etc/x11vnc sudo x11vnc -storepasswd /etc/x11vnc/passwd
Elija
y
para guardar la contraseña. -
Crear un archivo vacío en
/etc/init
llamadox11vnc.conf
:sudo -H gedit /etc/init/x11vnc.conf
-
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
-
Guardar y cerrar
-
Reiniciar Ubuntu
¡Eso es! Ahora debería ser capaz de conectarse con cualquier cliente VNC incluso antes de iniciar sesión.
Re: probar con X11vnc
¡¡¡¡x11vnc no ha sido actualizado desde septiembre de 2011!!!! Hay bugs conocidos y a mí me ha saltado uno que desencadena una terminación por pila de x11vnc cada vez que un diálogo emergente (como hacer clic en el menú 'archivo' de cualquier ventana) desconecta la sesión.
Las Raspberry pi pueden conectarse a la sesión del gestor de escritorio en :0, ¿por qué demonios es esto un problema para Ubuntu? ¿Por qué es necesario depender de un programa huérfano de 7 años para hacer esto en cualquier sistema operativo moderno?