TiddlyBlog de leoperbo

Esta es la versión simplificada de una sección del blog, optimizada para una carga rápida y compatibilidad con motores de búsqueda, por lo que faltan algunas funciones. Para disfrutar de la experiencia completa visita la versión wiki de esta página.

Configuración SSH y VNC del equipo anfitrión 2020

12 junio 2019 a las 12:39

Estos pasos dan por hecho que se está usando Lubuntu 20.04

1) Instalar software recomendado:

sudo apt install tigervnc-common tigervnc-standalone-server autocutsel 

2) Añadir un password de vncserver para cada usuario con el que se desee acceder al equipo remoto:

sudo -i -u [usuario]
vncpasswd

3) Configurar vnc como servicio mediante systemd:

3.1) Editar el archivo /etc/systemd/system/vncserver@:1.service (@:1 puede ser @:2 o @:3, el número indica el display virtual) añadiendo a su contenido lo siguiente:

[Unit]
Description=servicio de escritorio remoto vnc
After=syslog.target network.target

[Service]
Type=forking
User=usuario
PAMName=login

PIDFile=/home/usuario/.vnc/%H:%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -depth 16 -geometry 1366x768 -alwaysshared -localhost :%i
ExecStop=/usr/bin/vncserver --kill :%i

[Install]
WantedBy=multi-user.target

Fuente de este script

Nota: el valor :%i hace que el "DISPLAY" donde se iniciará la sesión VNC varíe según el siguiente que esté disponible en el equipo; en función de ello, el puerto en el que se haga el túnel SSH, será "5901", si el valor "DISPLAY" resultó ser "1", será 5902, si el valor "DISPLAY" fue "2". También es importante que tanto el módem como cualquier firewall tengan habilitado el enrutamiento de puertos en un rango razonable, si la máquina tiene más de dos salidas de video, por ejemplo 4 (pantalla integrada, HDMI, VGA y la virtual de tigervnc), entonces el rango permitido para el enrutamiento debería oscilar, por lo menos, entre 5900 y 5903 para evitar denegación de acceso.

Importante: Antes usaba TightVNC pero comenzó a dar problemas y por ello cambié a TigerVNC.

3.2) Editar /home/[usuario]/.vnc/xstartup y reemplazar el contenido con:

#!/bin/sh
vncconfig -iconic &
autocutsel -fork &
startlxqt &
lxqt-session

3.3) Actualizar permisos para permitir a cualquier usuario iniciar el X Server [VERIFICAR ESTE PASO ¿NECESARIO? ¿CÓDIGO CORRECTO?]:

chown -R [usuario] /home/[usuario]/.vnc && chmod +x /home/[usuario]/.vnc/xstartup
sed -i 's/allowed_users.*/allowed_users=anybody/g' /etc/X11/Xwrapper.config

Ejecutar:

vncserver -depth 16 -geometry 1280x800 -alwaysshared -localhost :%i

Conectarse a través de un visor de VNC (paso 4), se debe ver un escritorio de XFCE4, donde será necesario desactivar el inicio automático del gestor redes (en especial si la máquina tiene configurado un inicio de sesión en display 0 donde dicho gestor también es iniciado), esto es para evitar problemas con el siguiente paso.

3.4) Reiniciar systemd y habilitar el servidor vnc:

sudo systemctl daemon-reload
sudo systemctl enable --now vncserver@:1

3.5) Verificar el estado del servicio:

systemctl status vncserver@1

3.6) Asegurarse de que el servicio solo escucha en localhost:

netstat -alpn | grep :5901

Independientemente de sus puertos, en la salida del comando no debería aparecer ninguna dirección IP distinta de las siguientes:

127.0.0.1
0.0.0.0:*

4) Conectar cualquier cliente vnc mediante tunel ssh: Usar la dirección IP del equipo que presta el servicio VNC en el puerto 5901 aplicando el password indicado en el paso 2. Ejemplo de comando:

ssh -L 5901:localhost:5901 [usuario]@[URL o IP global] -p [puerto]

4.1) Configurar el acceso remoto a través del túnel SSH (https://help.ubuntu.com/community/VNC)

NOTA: En la configuración del módem hay que asignar/encender la aplicación "SSH" al dispositivo que funcionará como servidor, si se edita el puerto de escucha, será necesario editar la aplicación "SSH" en el módem.

4.2) Una vez asegurada la conexión VNC vía SSH, el acceso desde fuera de la red local solo será posible si el equipo cliente tiene forma de hacer port forwarding (traducción o redirección de puertos).

Desde un equipo con Android esta conexión puede realizarse combinando las apps ConnectBot y cualquiera de las siguientes:

Guía para la conexión desde Android.

4.3) Una vez establecida la conexión SSH con redirección de puertos desde el dispositivo cliente, el software cliente de VNC debe buscar la conexión con el formato localhost:[puerto] o 127.0.0.1:[puerto].

Es posible que haya un diálogo emergente con este mensaje: "Se requiere autenticación para crear perfil de color" (Authentication is required to create a color managed device), para resolverlo (referencia) hay que crear:

sudoedit /etc/polkit-1/localauthority/50-local.d/color.pkla

Y ponerle el siguiente contenido:

[Allow colord for all users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Hay que reiniciar el servicio para que el ajuste surta efecto.

Los pasos 1, 2, 3.2 y 3.3 están basados en How To Setup VNC For Ubuntu 12 . Los pasos 3, 3.1, 3.2, 3.4 y 3.5 están basados en How to Install and Configure VNC Server on Ubuntu 18.04 LTS

5) Ajustes necesarios en algunos entornos gráficos

5.1) Evitar que en Lubuntu se active el salvapantallas predeterminado (light-locker), ya que impide el control remoto a través de VNC (la conexión se establece pero se ve una pantalla negra o se cierra la ventana del cliente VNC). Esto ocurre aunque desde el entorno gráfico se especifique en la cuenta de cada usuario que no se desea usar el salvapantallas (bug que impide que la configuración de cada usuario aplique antes que la configuración general).

Por lo tanto, primero hay que remover la configuración global del salvapantallas:

sudo mv /etc/xdg/autostart/light-locker.desktop /etc/xdg/autostart/light-locker.desktop.bak

Después, hay que ajustar la configuración del salvapantallas de cada usuario editando el archivo ~/.config/autostart/light-locker.desktop eliminando el comando que aparece después de "Exec=".

La solución de este paso 6 está basada en Ask Ubuntu - Lubuntu enforces screen lock

5.2) Evitar que se muestre el gestor de redes (Network Manager) en la cuenta que será visualizada a través del display :1, ya que aportará información incorrecta (la correcta es la que se muestra en las cuentas del display :0, es decir las que tienen salida al monitor o pantalla conectados directamente a la máquina).

Primero hay que remover el archivo correspondiente a la gestión de redes ubicado en /etc/xdg/autostart/ (si se hace de forma gráfica el icono tiene el título "Red", si se hace vía comando sería:

sudo mv /etc/xdg/autostart/nm-applet.desktop /etc/xdg/autostart/nm-applet.desktop.bak

Después, en la cuenta del usuario que normalmente accederá a través del monitor conectado directamente a la máquina (display :0) hay que activar el inicio del gestor de redes usando el gestor de "Aplicaciones predeterminadas para LXSession", en la sección "Autostart" añadir el comando "nm-applet".

Esta solución está basada en Lubuntu, ¿donde esta mi wifi?



Contenidos derivados
Ordenar

ElementoEtiquetas