Escritorio remoto de sistemas Linux

No sé si alguna vez habéis necesitado trabajar en entorno gráfico con un sistema Linux de manera remota. En modo texto todo está bastante solucionado, pero a diferencia que en los sistemas Windows con su RDP, los Linux son un poco pasadillos para llevar todo su X a sistemas remotos, incluso si se utiliza compresión por SSH.

La existencia de un sistema ágil para trabajo en remoto con estos sistemas permite en cierta medida solventar el problema de tener distintos puestos/dispositivos de trabajo, relacionado con lo que @Razlobo comentaba[1].

He probado varias alternativas y por si os es de utilidad, os comento:

VNC

El sistema clásico de utilizar VNC para acceder a una sesión X ya creada o creada por vncserver. Funciona regular pero existen muchos clientes casi para cualquier plataforma.

Digo que es regular porque, aunque teniendo un buen sistema de comunicaciones, en muchas ocasiones no se producen correctamente los refrescos de pantalla o no se capturan correctamente los eventos del cliente, produciendo desesperación.

El servicio es poco o muy poco seguro, pero es posible configurarlo para escucha en modo local y acceder a él a través de túnel SSH, con lo que sí obtendríamos seguridad.

Otra pega que encuentro es que está orientado a escritorio, es decir, un tamaño preestablecido sobre el que se trabaja. Si tienes varios monitores o bien distintas resoluciones tienes que jugar con escalado.

Permite retomar sesiones de las se ha desconectado (como screen de las consolas texto) ya sea por problemas de red, o simplemente porque no se quiere seguir trabajando en ese momento.

Permite ser utilizado por tunelizado por proxy, en mi caso el soket proxy de Tor.

NX

Inicialmente FreeNX[2] permite la utilización de escritorios remotos con lo que poder trabajar y clientes para varias plataformas (creo que incluso dispositivos Android).

Funciona bastante bien, es seguro (pues la conexión a remoto está tunelizada por SSH), pero la versión libre (de Google) está obsoleta y la que está en activo es un Freeware de Nomachine.

Está también orientada a escritorio, pero mucho más flexible. No sé si permite recuperar sesiones de las que se ha desconectado.

No recuerdo si permite ser tunelizado por socket proxy.

Hay una alternativa que usa también el protocolo NX: X2Go[3], libre y que funciona bien. En mi caso no la pude usar por Tor.
Mismas características.

ssh -X

El reenvío de terminal X por SSH. Muuuy pesado y en la práctica bastante poco usable.

Lo bueno es que lo objetos X son construidos localmente, utilizando tu resolución, múltiples monitores, etc.

Xpra

Xpra[4], una mezcla entre ssh -X y VNC. Los objetos X son creados en local pero en base a la interpretación que hace el servidor en el que se realiza compresión, adaptando la calidad a lo que dé de sí la red.

En mi caso, es el claro ganador. No tengo una ventana de escritorio donde todo está allí, sino ventanas que interaccionan con mi escritorio. La calidad de los objetos X se va ajustando dinámicamente y el ancho de banda consumido es bastante bajo (sobre unos 12 KiB/s trabajando normal).

Estuve probando ver un vídeo de Youtube con el navegador remoto y se vio perfectamente (sobre 134 KiB/s).

Está pensado para ser utilizado en entornos con dificultad en las comunicaciones. La prueba que hice fue desde un sistema A (servidor) que se conectaba a Tor a través de un sistema intermedio B, y yo (sistema C) me conectaba por Tor al sistema A. Fue de maravilla.

Permite reconexión de sesiones desconectadas.

¿Conocéis más alternativas?


[1]: Comentario de @Razlobo: https://foro.hacklabalmeria.net/t/en-busca-de-ordenadores-moviles/7272.
[2]: FreeNX: https://en.wikipedia.org/wiki/NX_technology.
[3]: X2Go: https://en.wikipedia.org/wiki/X2Go.
[4]: Xpra: https://en.wikipedia.org/wiki/Xpra.

5 Me gusta

[…]

La existencia de un sistema ágil para trabajo en remoto con estos
sistemas permite en cierta medida solventar el problema de tener
distintos puestos/dispositivos de trabajo, relacionado con lo que
@Razlobo http://foro.hacklabalmeria.net/users/razlobo comentaba[1].

En ese hilo hay un chorro de comentarios y no se exactamente a cual te
refieres. Si te refieres al dispositivo en si, a mi no me sirve
conectarme a un escritorio remoto, entre otras cosas porque frecuento
sitios sin conexión.

[…]

Hay una alternativa que usa también el protocolo NX: X2Go[3], libre y
que funciona bien. En mi caso no la pude usar por Tor.
Mismas características.

No, X2Go no funciona bien, funciona muy, muy bien. Es la que uso para
conectarme al servidor de la oficina y también tenemos dos puestos
externos con él, todos conectan a través de una VPN. En mi caso la
velocidad es miserable y, aún así, tengo una buena respuesta.

Además, puedes configurar la salida como quieras, incluso si la tienes
en una ventana y la redimensionas, se redimensiona también el escritorio.

Una parte del proyecto se esta tirando hacia los clientes ligeros y,
posiblemente, es hacia donde voy a migrar la infraestructura de la
empresa; aunque reconozco que todavía tengo que mirármelo bien (Tcos va
demasiado bien pese a no tener ya soporte).

En cualquier caso, voy a darle un vistazo al XPra ese que comentas.

Pocas alternativas más puedo ofrecer, al menos libres, propietarias hay
alguna que otra; de hecho, es curioso que saques el tema porque el otro
día estuve mirando que alternativas libres existen para esa «aplicación
que usted tiene en mente».

Y, de hecho, pensé que no debería ser muy difícil crear algo utilizando
la tecnología Blockchain procedente de los Bitcoin, de esa forma no se
necesitaría servidores dedicados de terceros, y la seguridad y
privacidad quedarían bastante aseguradas.

Salud y Revolución.

Lobo.

Yo en estos casos siempre he usado SSH a pelo y modo texto, la verdad es que no le he visto nunca ninguna utilidad a administrar un sistema de forma remota con entorno gráfico (salvo cosas MUY específicas).

En cuyo caso, cuando lo he necesitado y lo he hecho, ha sido con VNC. Va bien dentro de lo que cabe, ¿por qué cambiar?

Ahora, ¿cual es realmente tu necesidad?

¿Conoces Spice?

1 me gusta

[SrFreak] SrFreak http://foro.hacklabalmeria.net/users/srfreak
19 Julio

Yo en estos casos siempre he usado SSH a pelo y modo texto, la verdad es
que no le he visto nunca ninguna utilidad a administrar un sistema de
forma remota con entorno gráfico (salvo cosas MUY específicas).

¿Como por ejemplo hacer asistencia remota a tu compañero de trabajo o a
un cliente? ¿Para hacer una demo a distancia?

También hay veces que necesitas comprobar tal o cual aplicación gráfica.

No se puede generalizar, que uno no tenga la necesidad no quiere decir
que no exista.

Por cierto, en Kde existe una aplicación para compartir el escritorio,
la he probado en redes locales y no iba mal, a ver si encuentro cual es…

$ muestra krfb
Package: krfb
Version: 4:16.04.0-1
Installed-Size: 681
Maintainer: Debian/Kubuntu Qt/KDE Maintainers
[email protected]
Architecture: amd64
Depends: libc6 (>= 2.14), libkf5completion5 (>= 4.97.0),
libkf5configcore5 (>= 4.98.0), libkf5configgui5 (>= 4.97.0),
libkf5configwidgets5 (>= 4.96.0), libkf5coreaddons5 (>= 5.2.0),
libkf5dbusaddons5 (>= 4.97.0), libkf5dnssd5 (>= 4.96.0), libkf5i18n5 (>=
4.97.0), libkf5notifications5 (>= 4.96.0), libkf5wallet-bin,
libkf5wallet5 (>= 4.96.0), libkf5widgetsaddons5 (>= 4.96.0),
libkf5xmlgui5 (>= 4.98.0), libqt5core5a (>= 5.5.0), libqt5gui5 (>=
5.0.2), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.2.0~alpha1),
libqt5x11extras5 (>= 5.1.0), libstdc++6 (>= 4.1.1), libvncserver1 (>=
0.9.10), libx11-6, libxtst6

Suggests: khelpcenter, krdc

Description-en: Desktop Sharing utility

KDE Desktop Sharing is a manager for easily sharing a desktop session
with
another system. The desktop session can be viewed or controlled
remotely by
any VNC or RFB client, such as the KDE Remote Desktop Connection
client.
.

KDE Desktop Sharing can restrict access to only users who are
explicitly
invited, and will ask for confirmation when a user attempts to connect.

.

This package is part of the KDE networking module.

Description-md5: 8c8d162f74b4548f90dcb0fb7f900216

Homepage: http://www.kde.org/

Tag: implemented-in::c++, interface::graphical, interface::x11,

network::server, role::program, suite::kde, uitoolkit::qt,

x11::application

Section: net

Priority: optional

Filename: pool/main/k/krfb/krfb_16.04.0-1_amd64.deb

Size: 364052

MD5sum: 79f3e40e60558b15ddb390f59a9abf14

SHA256: f0ebe2fa5c3c5c80bfe4448870035eab52e72e3399370eb117978ca7dae0b642

Salud y Revolución.

Lobo.

[olea] olea http://foro.hacklabalmeria.net/users/olea
19 Julio

¿Conoces Spice https://en.wikipedia.org/wiki/SPICE_(protocol)?

Yo si había escuchado hablar de Spice pero tenía entendido que se
utiliza para conexión remota en otras cosas, en concreto para lo que veo
en la sección de aplicaciones: máquinas virtuales.

¿Algún servidor/cliente para realizar escritorio remoto a través de red
(local/VP/Tor)?

Salud y Revolución.

Lobo.

Hombre no me refiero para administrar un equipo. Eso está bastante resuelto con el terminal y SSH. Me refiero a trabajar de manera remota con un ordenador, o como dice @Razlobo dar asistencia.

Vamos, concretamente a mí me molesta tener dos (o a veces más) ordenadores que tengo que configurar mi gusto, establecer un sistema de replicación de configuraciones (cuando se puede), etc, para tenerlos a mi gusto/necesidades.

Me gustaría tener un ordenador chachi en algún sitio tal y como lo quiero, y trabajar con él de manera remota a modo de NC[1], es decir, navegar por internet, tener mi entorno de desarrollo, utilidades, editores, gestores de correo, perfiles de conexión, etc. Un sistema con el que trabajar.

Lo malo sí es efectivamente la conexión, aunque si tenemos una buena tarifa de datos en el móvil quizá estemos hablando de un consumo aproximado de 42 MiB/hora de trabajo ((12 KiB/seg) * (60 seg/min) * (60 min/hora) / (1024 KiB/MiB)) con lo que sí que es posible trabajar remotamente incluso en aquellos casos en los que no tengamos red directa.


[1]: Network computer: https://en.wikipedia.org/wiki/Network_Computer.

¿Te refieres a crear un cola de procesamiento y almacenamiento para tener una especie de sistema distribuido no censurable? :slight_smile:


(Modificado a posteriori)

@Razlobo me refiero a computación descentralizada[1].


[1]: https://en.wikipedia.org/wiki/Decentralized_computing.

Nombre      : xorg-x11-server-Xspice
Arquitectur : x86_64
Epoch       : 0
Versión     : 0.1.4
Lanzamiento : 6.fc23
Tamaño      : 110 k
Repo        : fedora
Resumen     : XSpice is an X server that can be accessed by a Spice client
URL         : http://www.x.org
Licencia    : MIT
Descripción : XSpice is both an X and a Spice server.

referencia: https://lists.freedesktop.org/archives/spice-devel/2012-January/007028.html

Hola @Andy ,

Antetodo felicitarte por la forma de preguntar, dá gusta leer una pregunta donde se aporta el conocimiento previo.

Mi sugerencia:

cd /usr/ports/
[ajuda@FreeBSD-acer-x86 /usr/ports]$ make search key=guacamole | grep Path:
Path:	/usr/ports/net/guacamole-server
Path:	/usr/ports/www/guacamole-client
[ajuda@FreeBSD-acer-x86 /usr/ports]$ cat /usr/ports/net/guacamole-server/pkg-desccr 
The guacamole-server package is a set of software which forms the
basis of the Guacamole stack. It consists of guacd, libguac, and
several protocol support libraries.

guacd is the Guacamole proxy daemon used by the Guacamole web
application and framework. As JavaScript cannot handle binary
protocols (like VNC and remote desktop) efficiently, a new test-based
protocol was developed which would contain a common superset of the
operations needed for efficient remote desktop access, but would
be easy for JavaScript programs to process. guacd is the proxy which
translates between arbitrary protocols and the Guacamole protocol.

WWW: https://github.com/glyptodon/guacamole-server
[ajuda@FreeBSD-acer-x86 /usr/ports]$ cat /usr/ports/www/guacamole-client/pkg-desccr 
guacamole-client is the superproject containing all Maven-based
projects that make Guacamole, an HTML5 web application that provides
access to your desktop using remote desktop protocols.

guacamole-client is used to build the subprojects that make up
Guacamole, and to provide a common central repository. Each project
contained here is completely independent of guacamole-client and
can be built separately, though the others may have to be built
first. If all projects are built using guacamole-client, Maven will
take care of the proper build order.

WWW: https://github.com/glyptodon/guacamole-client
[ajuda@FreeBSD-acer-x86 /usr/ports]$ 

PD. Yo no lo he usado, asi que no puedo opinar pero ¡ tiene buena pinta !

Saludos.

Voy a probarlo.

1 me gusta

Hola @xxavi, guacamole es un cliente web de VNC. Es decir, en el servidor debe estar el servicio VNC y guacamole crea un cliente por HTTP. Lo bueno es que interaccionas con el servidor por puertos 80/443 y no por esos puertos especiales de VNC que normalmente están capados por los cortafuegos corporativos.

Hola @Andy ,

Según se puede leer en su web1:

Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.

Lo he comentado en tu apunte porqué reúne varias ventanjas en un mismo software que se han comentado en los diferentes apuntes que se han hecho en esta publicación, como són los diferentes protocolos que soporta.
Por ser servidor-cliente a la vez.
Por tener ciertas ventajas que creía que se apreciarían sin tener que comentarlas, como por ejemplo que el cliente sea via web.
Por ser ideal para diferentes usos que se han comentado en algún apunte en esta publicación.
Y, por ser mucho mejor software que algunas utilidades que se han comentado en esta aplicación, como por ejemplo VNC o ‘ssh -X’ para un user friendly.

Como digo, yo no lo he probado pero, tiene muy buena pinta.

Probablemente le falten cosas que se han comentado también en esta publicación como por ejemplo la seguridad de las comunicaciones que pueda integrar, etc.

¡ Pero es que, tampoco nadie a apuntado ningún software que cumpla con todo … !

En cualquier caso, uno más a la lista a tener en cuenta.

Saludos.

[Andy] Andy http://foro.hacklabalmeria.net/users/andy
19 Julio

Razlobo:

Y, de hecho, pensé que no debería ser muy difícil crear algo
utilizandola tecnología Blockchain procedente de los Bitcoin, de esa
forma no senecesitaría servidores dedicados de terceros, y la
seguridad yprivacidad quedarían bastante aseguradas.

¿Te refieres a crear un cola de procesamiento y almacenamiento para
tener una especie de sistema distribuido no censurable? :slight_smile:


(Modificado a posteriori:)

@Razlobo http://foro.hacklabalmeria.net/users/razlobo me refiero a
computación descentralizada[1].

No, no, me refiero a lo primero, sobre todo a lo de no censurable. ;^)

En serio, me explico algo más: esa aplicación que usted tiene en la
mente utilizar un servidor propio para poder enlazar el servidor con el
cliente, con la tecnología Blockchain (si mal no la he entendido) se
puede utilizar el hash base de Bitcoin para crear una huella única. Con
esa huella única y utilizando los mismos principios que en las
transacciones Bitcoin se puede dar acceso al cliente desde el servidor.

¿O estoy equivocado?

Salud y Revolución.

Lobo.

Pd.: Los de computación distribuida habrá que estudiarlo, puede ser
interesante.

los cálculos de cada transacción del blockchain son prohibitivos (tiempo y CPU) para cualquier cosa que implique sesiones interactivas.

1 me gusta

Está graciosillo.

@Andy ¿has verificado si se hace la picha un lío cuando en el mismo servidor tienes abierta una sesión gráfica con el mismo usuario? pq recuerdo que cosas estilo dconf en el pasado se han dado de tortas.

También me da un error con las pillow, a pesar de que las he instalado (en cliente y en servidor):

2016-07-25 19:08:19,095  cannot load dec_pillow (Pillow decoder):
Traceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/xpra/codecs/loader.py", line 42, in codec_import_check
    __import__(top_module, {}, {}, [])
  File "/usr/lib64/python2.7/site-packages/xpra/codecs/pillow/__init__.py", line 26, in <module>
    PIL_VERSION = PIL.PILLOW_VERSION
AttributeError: 'module' object has no attribute 'PILLOW_VERSION'
2016-07-25 19:08:19,095 error during codec import: 'module' object has no attribute 'PILLOW_VERSION'
2016-07-25 19:08:19,095 
Traceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/xpra/codecs/loader.py", line 88, in add_codec_version
    module = __import__(top_module, {}, {}, [f])
  File "/usr/lib64/python2.7/site-packages/xpra/codecs/pillow/__init__.py", line 26, in <module>
    PIL_VERSION = PIL.PILLOW_VERSION
AttributeError: 'module' object has no attribute 'PILLOW_VERSION'

Sí, mismo usuario con dos sesiones, una de escritorio convencional y otra xpra. Ambas fueron bein en lo que hice, exceptuando dos cosas:

  1. Firefox/Iceweasel/Icecat sólo puede estar abierto en una de las sesiones, por lo que en la otra debería morir.
  2. Mismas situación para Thunderbird/Icedove.

Supongo que habrá algún truco para que se pueda, pero no he investigado. Quizá sea normal esto porque comparten directorio (caché, etc) si hay varias instancias.

Lo de Spice, lo he probado pero no consigo que funcione. Levanta servidor X remoto, pero contenido vacío. Tendré que seguir probando.

@Andy, cuando haces un attach para recuperar una sesión, ¿te funciona siempre?

¡OH! ¡OH! ¡OH!

https://xpra.org/trac/wiki/ShadowServer

Así sencillamente te conectas a una sesión X que ya esté abierta :-o

2 Me gusta

Hasta ahora, sí.