¿Cómo configuro la sesión xrdp que reutiliza una sesión existente?

57

He estado tratando de configurar un servidor de terminal RDP con precisión utilizando xrdp y he tenido problemas importantes para obtener una configuración que funcione. Cuando un usuario inicia sesión, necesito que se conecte a la sesión existente de ese usuario si existe, de lo contrario, se inicia una nueva sesión y cualquier sesión iniciada debe iniciar LXDE. ¿Qué cambios a la configuración predeterminada debo hacer para que esto funcione?

nloewen
fuente
En mi configuración XRDP (excepto que estoy ejecutando Unity en sesiones de escritorio y Unity2D para sesiones remotas), iniciar sesión como un usuario recoge automáticamente sus sesiones anteriores. ¿Cada usuario obtiene una nueva sesión cada vez que se conecta?
agc93
La mejor explicación / solución que he encontrado en Internet se puede encontrar en esta ubicación c-nergy.be/blog/?p=2879 Darle una oportunidad Espero que esta información ayuda
gyest

Respuestas:

46

Tuve el mismo problema y acabo de encontrar una solución fácil. Originalmente acabo de instalar xrdp usando el procedimiento estándar:

apt-get install xrdp

Después de eso, se trata de su archivo xrdp.ini, que se encuentra aquí:

/etc/xrdp/xrdp.ini

Para abrir y editar el archivo de configuración de xrdp use:

sudo nano /etc/xrdp/xrdp.ini

de manera predeterminada, el primer script de manejo de sesión xrdp se ve así:

[xrdp1]
name=sesman-vnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

La línea importante es que port=-1esto hace que xrdp siempre busque un puerto libre para conectarse. Si configura un puerto fijo aquí, el xrdp siempre volverá y se conectará a la misma sesión. Cambié la mía para que se vea así:

[xrdp1]
name=customsessionname
lib=libvnc.so
username=myusername
password=ask
ip=127.0.0.1
port=5912

Eso es todo, creo que podrías salirte con solo cambiar el port=-1a port=5912. Mi xrdp siempre se vuelve a conectar a la sesión existente siempre usando el mismo puerto.

jeffery_the_wind
fuente
2
Esta solución funciona bien para mí, pero debo señalar que cualquiera que se conecte a la misma máquina obtendrá la misma sesión, incluso si alguien más inició sesión en esa sesión.
VeeTheSecond
77
eso solo funciona si ya hay una sesión existente. La primera vez en, no hay sesión, por lo que no se puede conectar al puerto 5912.
Stu
44
tiene el mismo problema ... parece que por defecto intenta abrir una conexión usando 5911port (puede notarlo cuando xrpd se está conectando). Entonces cambié de puerto = -1 a puerto = ask5911. De esta manera, 5911 se usa de manera predeterminada, pero puede cambiar ese puerto cuando ingresa el usuario / contraseña mientras se conecta (por lo que no es necesario volver a configurar nada en caso de errores ...)
Maxym
1
Este comportamiento depende estrictamente de la implementación del servidor vnc. En centos, estoy usando tigervnc, que siempre se une a la sesión existente o crea una con la configuración port = -1. Sin embargo, en ubuntu, el valor predeterminado es tightvncserver, que no tiene el mismo comportamiento. Simplemente juegue con implementaciones de vnc, en todo caso.
Denys S.
1
El puerto predeterminado es 5910, consulte askubuntu.com/a/527975/592751
Pedi T.
16

Me gustaría mejorar una respuesta existente. La respuesta más votada fue editar el xrdp.iniarchivo para cambiar el puerto a un valor fijo en lugar del -1comodín para encontrar un puerto abierto.

Intenté eso, pero recibí un error al conectar la primera vez, así que terminé volviendo al -1valor. Sin embargo, la frustración se instaló rápidamente con el problema de no reanudar, así que volví a mirar el archivo ini.

Lo que funcionó para mí, y realmente fue algo de lo que tenía curiosidad, fue esto:

Edite el /etc/xrdp/xrdp.ini

En [xrdp1]donde port=-1noté que el nombre de usuario y la contraseña se configuraron en ASK. Si configura, port=askse le dará la opción en el indicador de inicio de sesión con nombre de usuario y contraseña para elegir un puerto.

En lugar de instalar paquetes adicionales, encontré que la solución más fácil era establecer la opción de preguntar, conectar la PRIMERA sesión (si aún no tengo una en ejecución) en el puerto -1 en el inicio de sesión con nombre de usuario y contraseña.
Después de desconectar la sesión, para reanudar una sesión existente, siempre inicie sesión en el puerto predeterminado: 5910 y reanudará su sesión existente hasta que reinicie la computadora remota o finalice la sesión al cerrar sesión.

Para resumir:

  • Edite el xrdp.iniarchivo
  • conjunto port = ask
  • conectarse desde la máquina remota, y al iniciar sesión si no tiene una sesión existente, especifique el puerto -1
  • para reanudar una sesión, ingrese el valor predeterminado de 5910
Pregunta Realidad
fuente
Trabajó para mi. Aunque no recordaré 5910 en el futuro.
Vesanto
77
Pude cambiar con éxito la entrada a: [xrdp1]. . . port = ask5910 Esto predetermina el puerto a 5910 para que no tenga que recordarlo como dijo Vesanto (¡tampoco lo recordaría, Vesanto!) pero también le da la opción de cambiarlo si desea generar una nueva sesión de escritorio en, digamos el puerto 5911. Probé esto en Ubuntu 16.04.
hoekma
2
^ esa es la mejor solución que he encontrado también.
Nacht - Restablece a Mónica el
En un Rpi3 recién arrancado, comencé una nueva sesión con el puerto -1 y luego entré con una computadora diferente y usé el puerto 5910: retomó la misma sesión. Cuando mueves cosas en una computadora, puedes ver que sucede en la otra.
SDsolar
Si lo vuelve a hacer pero le da un número de puerto de -1, le da una nueva sesión.
SDsolar
7

Odio ser el tipo que simplemente suelta un enlace, pero seguí la guía aquí y funcionó muy bien. Ahora puedo iniciar sesión en una sesión RDP desde los hosts de Linux y Windows y volver a conectarme a mi sesión anterior si he iniciado sesión antes. Esta es la mejor guía para la instalación que he encontrado. Desafortunadamente, la instalación del paquete estándar causa muchos más problemas que hacerlo desde la fuente.

El autor de ese enlace también ha creado una herramienta automática para instalarlo y configurarlo, pero no lo he probado, así que tenga cuidado.

Espero que te ayude.

agc93
fuente
Gracias por proporcionar el enlace. ¿Esto implica que no hay ningún paquete de trabajo que funcione para xrdp?
Jan
Vi uno hace algún tiempo, pero no funcionó correctamente con las versiones más nuevas de Ubuntu. Hasta donde sé, no hay un paquete .deb que funcione para XRDP en las versiones de Ubuntu posteriores a la 10.04. Feliz de que se demuestre lo contrario, por supuesto, ya que este método es decepcionantemente irritante.
agc93
compruebe mi solución, que es súper automática en script para ubuntu 12 64bithttp://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855
Creo que lo que tiene sentido para esta pregunta es crear su propio .xsessionarchivo en el directorio de inicio. Por ejemplo, si usa gnome-desktop, ejecuteecho gnome-session >> ~/.xsession
artificerpi el
4

El problema es que xrdp no siempre se conecta al mismo puerto. En caso de que no lo haya hecho y haya olvidado el número de puerto, puede iniciar sesión en una sesión ssh y averiguar el número por

netstat -tulpn | grep vnc

y obtendrás algo como lo siguiente

tcp        0      0 127.0.0.1:5911          0.0.0.0:*               LISTEN      5365/Xvnc

y luego sabes que 5911 era el puerto al que te conectaste.

YH Wu
fuente
2

en la pantalla de inicio de sesión con el cuadro xrdp cuando se conecta por primera vez al escritorio remoto, debe haber un cuadro desplegable, desde aquí elija "vnc-any", luego ingrese la dirección IP de la computadora y la contraseña, pero deje el puerto en es, esto debería ayudar :)

Dewi Jones
fuente
Parece el más fácil y funciona para mí. Excelente. Sin complicado de instalar, etc. compilación
Josef
1

1. Modifique su xrdp.ini:

sudo vi /etc/xrdp/xrdp.ini

2. Cambie la configuración del puerto port=ask-1en su regla de conexión:

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=ask-1

3. Reinicie su servicio xrdp

sudo service xrdp restart

Debería ver la siguiente imagen cuando inicie sesión desde un escritorio remoto. ingrese la descripción de la imagen aquí

1. Al primer inicio de sesión, puede ver este número de puerto. Ejemplo: 5912: ingrese la descripción de la imagen aquí

Si olvida este número de puerto, puede usar el siguiente comando para verificar:

netstat -peant | grep 59 | grep Xvnc

2. Puede volver a conectar la última sesión por su número de puerto. ingrese la descripción de la imagen aquí


Ref: http://c-nergy.be/blog/?p=5305

W. Dan
fuente
0

Me encontré con este problema en una máquina Debian. Usé X11RDP-o-Matic para construir paquetes xrdp 0.7. Antes de actualizar a systemd, la reconexión de sesión xrdp funcionó bien.

Mirando el árbol de procesos pude ver que las sesiones ya no eran hijos de xrdp-sesman. Resultó ser un problema de permisos al usar systemd. Google encontró un parche que soluciona el problema.

¿Cómo identificas una reconexión que funcione? Ejecute ps axfy mire el árbol de procesos para xrdp-sesman. X11rdp, xrdp-chansrv, xrdp-sessvctodos deberían estar corriendo como un niño. Si no lo están, xrdp-sesmanno sabrán cómo volver a conectarnos a la sesión.

Así es como se ve cuando se trabaja:

buen proceso de sesión xrdp

h0tw1r3
fuente
0

Esto es lo que hice. Asegúrese de que el servidor tigervnc esté instalado para que podamos usar Xvnc. Inicie una sesión de VNC con la configuración predeterminada (en realidad, seguí la guía de configuración de Arch Linux para TigerVNC). Luego configure su Xrdp para usar esa sesión VNC cada vez. También configure TigerVNC para iniciar en el arranque o algo así. Esta es la única sección de VNC en mi archivo xrdp.ini:

[vnc-any]
name=vnc-any
lib=libvnc.so
ip=localhost
port=5901
username=na
password=YOURPASSWORD
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000
Nevar
fuente
-1

Este hilo de UbuntuForum parece útil, no lo he probado yo mismo, sin embargo, he copiado la solución dada aquí para completar esta respuesta.

Configuración RealVNC

1. Desinstalación del servidor Ubuntu VNC predeterminado (Vino):

Vaya a: Sistema -> Administración -> Administrador de paquetes Synaptic Busque el paquete "Vino", Marque para eliminación, Solicite.

2. Instalación de TightVNC y XRDP:

Mientras utiliza Synaptic Package Manager, busque el paquete "tightvnc" (tenga cuidado, no " xtightvnc ") y Marque para la instalación. Del mismo modo, busque el paquete "xrdp" y marque también para la instalación. Aplicar. PD: si lo desea, puede descartar cualquier otro paquete "vnc" que no necesite.

3. Configuración de XRDP (Opcional)

Abra una terminal y escriba los tres comandos siguientes:

 cd /etc/xrdp
 cp xrdp.ini xrdp.ini.bak 
 sudo gedit /etc/xrdp/xrdp.ini

Elimine las secciones Xrdp2-Xrdp6, deje solo la sección Xrdp1. Su xrdp.ini debería verse así:

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1

[xrdp1]
name=RDP_To_TightVNC
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

4. Conectando

¡Reinicie el sistema y estará listo para conectarse!

Para conectarse desde otra máquina Ubuntu, use: Aplicaciones -> Internet -> Terminal Server Client, escriba la IP de su máquina Ubuntu VNC, use RDPv5 o RDP, ¡haga clic en Conectar!

Para conectarse desde una máquina basada en Windows, use: Inicio -> Ejecutar -> mstsc, escriba la IP de su máquina Ubuntu VNC, haga clic en Conectar.

Cuando esté conectado, use las credenciales de su cuenta de usuario de Ubuntu (u / ny p / w) e inicie sesión de forma remota en su escritorio.

Rahul Virpara
fuente
¿Realmente has probado esto? Parece que acaba de copiar y pegar el enlace literalmente. Si copia y pega, reconozca la fuente en su respuesta.
fossfreedom
@fossfreedom no, no he probado pero traté de ayudar. Por cierto, ya he mencionado la fuente en this may help you.
Rahul Virpara
Quizás debería ser más explícito que su fuente y la veracidad de la respuesta. Mira mi edición.
fossfreedom