¿Cómo configurar el uso compartido de escritorio remoto a través de SSH?

Respuestas:

51

Método 1 :

Esto se puede lograr con vino vnc server & remmina (ambos vienen por defecto con ubuntu; si no, instálelo ejecutando sudo apt-get install remmina). Luego, ejecute los siguientes comandos desde la computadora local en el indicador de terminal:

  1. ssh -Y gman@remote. Utilice el reenvío X11 de confianza, de lo contrario no funcionará

  2. vino-preferences. Se abrirán las preferencias de vino.

    preferencia de vino

  3. También haga clic configure network automatically to accept connection. Pero no ingrese ninguna contraseña, está codificada en base64 . Luego haga clic en cerrar. Entonces corre:

    sudo -s
    
    export DISPLAY=:0.0
    
    xhost +
    
    /usr/lib/vino/vino-server & 
    

    Se iniciará el servidor de vino.

  4. Cerrar sesión del servidor:

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
    
  5. Luego abre remmina . Elija vncbajo protocolo.

    En la basicpestaña, coloque la dirección del servidor en el servercampo.

    En la pestaña ssh, haga clic enable ssh tunnel. Debajo ssh authentication, podría ser passwordo public key:

    preferencia de remmina

    Clic en Guardar. Y luego haga doble clic en el nombre de la conexión (home-desktop como se muestra en la imagen) para comenzar a explorar el escritorio remoto.


Método 2:

x11vnces un servidor VNC simple y no tendrá que perder el tiempo con la configuración de Gnome o con 500 firewalls, solo instálelo x11vncen todas sus computadoras (con títeres o lo que sea que esté usando para el control de masas).

Luego, desde su computadora local, ejecute:

ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"

Obviamente, cambiar user@hostel nombre de usuario y el nombre de host / IP de la computadora remota.

Y luego use un cliente VNC de su elección para conectarse localhost:5900. El comando SSH inicia un servidor vnc en la computadora remota y luego vuelve a tunelizar ese puerto a través de SSH. No tiene que abrir ningún puerto (siempre que ya pueda SSH).

Si sus computadoras tienen configuraciones de pantalla divertidas, es mejor que deje el -display :0segmento en el comando SSH. x11vncintentará automáticamente encontrar la pantalla correcta.


Fuente: askubuntu

Khurshid Alam
fuente
Si está utilizando vncviewer con una conexión ssh lenta, su comando debería verse así vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(en Debian / Ubuntu el visor es de tightvnc) o vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(en Red Hat / Fedora el visor es de tigervnc), donde el nivel de calidad en Debian y Redhat es entre 0 y 9, donde 9 es mejor, pero necesita una conexión rápida.
erik
@erik Gracias por explicar cómo usarlo vncviewerpara una conexión lenta. Personalmente, probablemente estableceré QualityLevel=4 or 5porque 0 qualitylevel(que es 256 colors, creo) es demasiado aburrido para mí.
Khurshid Alam
1
Su "Método 2" es perfecto para un acceso rápido a la pantalla física de forma remota sin ninguna configuración permanente especial. Necesitaba agregar el parámetro -auth como se explica en el mensaje de error cuando ejecuté el comando, pero de lo contrario funciona perfectamente. ¡Gracias!
Pierre
@gerky método 3 sería NoMachine, actualmente es el más rápido y gratuito (a pesar de no ser de código abierto), y también funciona en Android
Aquarius Power
1
Para el método 2, tuve que usarlo -auth guessy ejecutarlo como root. Muy útil, gracias!
Bob Carlson
9

Descripción general de la solución

Suponiendo que ya ha configurado un OpenSSH Serveren su máquina host, primero debe habilitar el control de escritorio en su máquina host. Si primero puede habilitar el control de escritorio en su máquina host localmente, diríjase a 1a. Si primero debe habilitar el control de escritorio en su máquina host de forma remota, diríjase a 1b.

Luego, cree un perfil de Cliente de escritorio remoto en su máquina cliente para conectarse a la máquina host a través de un túnel SSH y, en última instancia, ver y controlar el escritorio de la máquina host a través de un túnel SSH.

1a. Habilitar localmente el control remoto de la máquina host

Haga lo siguiente en la máquina host:

vino-preferences
  • vino-preferences también en Dash debajo Desktop Sharing

ingrese la descripción de la imagen aquí

  1. garrapata Allow other users to view your desktop
  2. garrapata Allow other users to control your desktop
  3. garrapata Require the user to enter this password
  4. Ingrese una frase de contraseña difícil de adivinar
  5. Cerca

1b. Activar remotamente el control remoto de la máquina host

Haga lo siguiente en la máquina cliente, reemplazando 123.123.12.3con la dirección IP de su máquina host:

ssh -Y 123.123.12.3
  • -Y, permite el reenvío de confianza X11. Los reenvíos X11 de confianza no están sujetos a los controles de extensión X11 SECURITY.

vino-preferences
  • vino-preferences también en Dash debajo Desktop Sharing

ingrese la descripción de la imagen aquí

  1. garrapata Allow other users to view your desktop
  2. garrapata Allow other users to control your desktop
  3. garrapata Require the user to enter this password
  4. Ingrese una frase de contraseña difícil de adivinar
  5. Cerca

Cree un perfil de cliente de escritorio remoto en su máquina cliente

Haga lo siguiente en la máquina del cliente:

remmina
  • remmina también en Dash bajo Remmina Remote Desktop Client

Ctrl+ No Conexión> Nuevo

ingrese la descripción de la imagen aquí

  1. Complete su dirección IP [123.123.12.3] donde dice Server
  2. Cambiar a la SSHpestaña

ingrese la descripción de la imagen aquí

  1. garrapata Enable SSH Tunnel
  2. Apunte su Desktop Client a su puerto SSH no estándar
  3. Configura tu SSH Authentication <username>y modo
  4. Conectar

Ver y controlar la máquina host

En la máquina del cliente, cuando se le <username>solicite la contraseña, introdúzcala para crear el túnel SSH. Cuando se le solicite la contraseña de VNC, ingrese la frase de contraseña que ingresó anteriormente en la máquina host.

Si tiene éxito en este paso, ahora debería ver y controlar el escritorio de la máquina host desde su máquina cliente a través de un túnel SSH.

jtd
fuente
Esto parece bastante completo, pero ¿dónde está definido el puerto personalizado 12345 en el host?
John T
Supongo que necesita ejecutar un comando ssh desde el cliente en alguna parte, algo como: ssh -L 12345: localhost: 5900 user @ server_ip antes de usar el cliente remoto como se describe.
John T
3

Pude configurar una nueva instalación de Ubuntu 16.04 desde una conexión ssh remota con el siguiente script:

#! / bin / bash
PANTALLA de exportación =: 0
leer -e -p "Contraseña de VNC:" -i "contraseña de ubuntu"
dconf write / org / gnome / desktop / remote-access / enabled true
dconf write / org / gnome / desktop / remote-access / prompt-enabled false
dconf write / org / gnome / desktop / remote-access / autenticación-métodos "['vnc']"
dconf write / org / gnome / desktop / remote-access / require-encryption false
dconf write / org / gnome / desktop / remote-access / vnc-password \ "\ '$ (echo -n $ password | base64) \' \"
dconf dump / org / gnome / desktop / remote-access /
reinicio de sudo service lightdm

Las comillas son importantes para cualquiera de las configuraciones de cadena (marcas simples dentro de comillas). Para que dconf pueda escribir necesita acceso a XWindows, por eso se necesita la parte EXPLAY de exportación. Creo que aún necesita iniciar sesión en el escritorio en la máquina Ubuntu real para conectarse con VNC después de esto. El comando de volcado solo está allí para confirmar que todas las configuraciones tomaron posesión, realmente no lo necesita.

Opcionalmente, puede hacer esto si desea mantener la pantalla todo el tiempo:

dconf write / org / gnome / desktop / screensaver / lock-enabled false
dconf write / org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false
dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
Integrador
fuente
2
  1. Podría usar ssh para iniciar una sesión de vnc
  2. Úselo Xnestcon X11 para redactar para iniciar una sesión de forma remota y reenviarlo a su computadora actual. (Hago esto de vez en cuando con mi pi) página de manual

Yo uso Xnestasí:

  • Xnest :1 -ac &
  • luego DISPLAY=:1 . /etc/X11/Xsession
recatado
fuente
0

Cómo iniciar el servidor Vino de forma remota sin reenviar X (solo línea de comando)

Inicie sesión en la computadora remota como el usuario que compartirá su escritorio y reenviará el puerto 5900 al mismo puerto en localhost. Con PuTTY, la redirección se establece en Conexión / SSH / Túneles. Con una línea de comando, use:

 ssh -L 5900:localhost:5900 user@remote-computer

Instalar vino-serversi aún no está instalado. Por ejemplo:

sudo apt install vino

Habilite el uso compartido de escritorio (que coincida con el número de pantalla en la primera y segunda líneas):

echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

Inicie un visor VNC y conéctese para localhostobtener la dirección del servidor VNC.

Futal
fuente
Tengo lo siguiente. Parece que todo esto supone que ya has iniciado sesión en una consola GUI. No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
algas
0

basado en la respuesta de @Khurshid Alam, presento el siguiente fragmento:

ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost

  • Es un comando que no requiere ninguna interacción.

  • Crea el túnel SSH con reenvío de puertos, comienza x11vncde una manera razonablemente segura y lanza y conecta el visor VNC

  • Requiere x11vnc en el host de destino, pero no necesita más configuración

  • Requiere vinagre en su PC, pero puede cambiarlo trivialmente para otro visor VNC
mnagel
fuente
0

En la PC del servidor.

  • Abra 'preferencias de vino' desde la terminal o 'Compartir escritorio' usando el guión.

preferencias de vino

En la PC cliente (desde donde desea controlar la IU del servidor).

  • Mantenga la configuración como se muestra en las imágenes a continuación (con cambios en el lugar del nombre de usuario y la IP).

Pestaña * Básico * *Lengüeta avanzada Pestaña * SSH *

Trampas.

  • Cuando intenté establecer las preferencias de vino en el servidor desde una PC remota usando SSH, se modificó, pero la conexión no se realizó. Tuve que hacerlo en la máquina del servidor directamente (no de forma remota). No sé la razón de este comportamiento.
vineeshvs
fuente