Score:1

XRDP hangs after clicking ok for login

vn flag

I'm trying to use xrdp (latest version 0.9.12-1) to connect from windows 10 to Ubuntu 20.04.5 LTS. When I get to this login screen, I type in my credentials, click ok, then xrdp just freezes for around 5 minutes, then unfreezes again but stays on the same screen and nothing happens. How do I fix this?

I tried the following steps from another post with the same question, but it didn't work for me:

sudo apt-get purge xrdp
sudo apt-get install xrdp
sudo apt-get install xfce4
sudo apt-get install xfce4-goodies    

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
echo xfce4-session > ~/.xsession

sudo nano /etc/xrdp/startwm.sh
comment these lines to:
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession

add these lines:
# xfce
startxfce4

sudo /etc/init.d/xrdp start 

enter image description here

[20221110-10:34:28] [INFO ] listening to port 3350 on 127.0.0.1
[20221110-10:59:33] [DEBUG] libscp initialized
[20221110-10:59:33] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20221110-10:59:33] [DEBUG] Closed socket 6 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221110-10:59:33] [INFO ] starting xrdp-sesman with pid 1465
[20221110-10:59:33] [INFO ] listening to port 3350 on 127.0.0.1
[20221110-11:03:39] [INFO ] shutting down sesman 1
[20221110-11:03:39] [DEBUG] Closed socket 8 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221110-11:04:04] [DEBUG] libscp initialized
[20221110-11:04:04] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20221110-11:04:04] [DEBUG] Closed socket 6 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221110-11:04:04] [INFO ] starting xrdp-sesman with pid 1462
[20221110-11:04:04] [INFO ] listening to port 3350 on 127.0.0.1
[20221110-11:25:54] [INFO ] shutting down sesman 1
[20221110-11:25:54] [DEBUG] Closed socket 8 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221110-11:27:47] [DEBUG] libscp initialized
[20221110-11:27:47] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20221110-11:27:47] [DEBUG] Closed socket 6 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221110-11:27:47] [INFO ] starting xrdp-sesman with pid 1470
[20221110-11:27:47] [INFO ] listening to port 3350 on 127.0.0.1
[20221122-14:51:20] [INFO ] shutting down sesman 1
[20221122-14:51:20] [DEBUG] Closed socket 8 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221122-14:51:54] [DEBUG] libscp initialized
[20221122-14:51:54] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20221122-14:51:54] [DEBUG] Closed socket 6 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221122-14:51:54] [INFO ] starting xrdp-sesman with pid 1499
[20221122-14:51:54] [INFO ] listening to port 3350 on 127.0.0.1
[20221202-16:19:12] [INFO ] shutting down sesman 1
[20221202-16:19:12] [DEBUG] Closed socket 8 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221202-16:19:51] [DEBUG] libscp initialized
[20221202-16:19:51] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20221202-16:19:51] [DEBUG] Closed socket 6 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221202-16:19:51] [INFO ] starting xrdp-sesman with pid 1486
[20221202-16:19:51] [INFO ] listening to port 3350 on 127.0.0.1
[20221207-11:12:01] [INFO ] shutting down sesman 1
[20221207-11:12:01] [DEBUG] Closed socket 8 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221207-11:25:18] [DEBUG] libscp initialized
[20221207-11:25:18] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20221207-11:25:18] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20221207-11:25:18] [INFO ] starting xrdp-sesman with pid 1085654
[20221207-11:25:18] [INFO ] listening to port 3350 on 127.0.0.1

Here is my xrdp.ini file:

[Globals]
; xrdp.ini file version number
ini_version=1

; fork a new process for each incoming connection
fork=true

; ports to listen on, number alone means listen on all interfaces
; 0.0.0.0 or :: if ipv6 is configured
; space between multiple occurrences
;
; Examples:
;   port=3390
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3390                           127.0.0.1:3390
;   port=tcp://:3390                            *:3390
;   port=tcp://<any ipv4 format addr>:3390      192.168.1.1:3390
;   port=tcp6://.:3390                          ::1:3390
;   port=tcp6://:3390                           *:3390
;   port=tcp6://{<any ipv6 format addr>}:3390   {FC00:0:0:0:0:0:0:1}:3390
;   port=vsock://<cid>:<port>
port=3390

; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
; prefer use vsock://<cid>:<port> above
use_vsock=false

; regulate if the listening socket use socket option tcp_nodelay
; no buffering will be performed in the TCP stack
tcp_nodelay=true

; regulate if the listening socket use socket option keepalive
; if the network connection disappear without close messages the connection will be closed
tcp_keepalive=true

; set tcp send/recv buffer (for experts)
#tcp_send_buffer_bytes=32768
#tcp_recv_buffer_bytes=32768

; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate

; minimum security level allowed for client for classic RDP encryption
; use tls_ciphers to configure TLS encryption
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high

; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
; note this needs the user xrdp to be a member of the ssl-cert group, do with e.g.
;$ sudo adduser xrdp ssl-cert
certificate=
key_file=

; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH

; Section name to use for automatic login if the client sends username
; and password. If empty, the domain name sent by the client is used.
; If empty and no domain name is given, the first suitable section in
; this file will be used.
autorun=

allow_channels=true
allow_multimon=true
bitmap_cache=true
bitmap_compression=true
bulk_compression=true
#hidelogwindow=true
#max_bpp=32
max_bpp=128
new_cursors=true
; fastpath - can be 'input', 'output', 'both', 'none'
use_fastpath=both
; when true, userid/password *must* be passed on cmd line
#require_credentials=true
; You can set the PAM error text in a gateway setup (MAX 256 chars)
#pamerrortxt=change your password according to policy at http://url

;
; colors used by windows in RGB format
;
blue=009cb5
grey=dedede
#black=000000
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

;
; configure login screen
;

; Login Screen Window Title
#ls_title=My Login Title

; top level window background color in RGB format
ls_top_window_bg_color=009cb5

; width and height of login screen
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename (bmp format).
#ls_background_image=

; logo
; full path to bmp-file or file in shared folder
ls_logo_filename=
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=65

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

[Logging]
LogFile=xrdp.log
LogLevel=DEBUG
EnableSyslog=true
SyslogLevel=DEBUG
; LogLevel and SysLogLevel could by any of: core, error, warning, info or debug

[Channels]
; Channel names not listed here will be blocked by XRDP.
; You can block any channel by setting its value to false.
; IMPORTANT! All channels are not supported in all use
; cases even if you set all values to true.
; You can override these settings on each session type
; These settings are only used if allow_channels=true
rdpdr=true
rdpsnd=true
drdynvc=true
cliprdr=true
rail=true
xrdpvr=true
tcutils=true

; for debugging xrdp, in section xrdp1, change port=-1 to this:
#port=/tmp/.xrdp/xrdp_display_10

; for debugging xrdp, add following line to section xrdp1
#chansrvport=/tmp/.xrdp/xrdp_chansrv_socket_7210


;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
##xserverbpp=24
xserverbpp=128
#delay_ms=2000

[vnc-any]
name=vnc-any
lib=libvnc.so
ip=ask
port=ask5900
username=na
password=ask
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

[neutrinordp-any]
name=neutrinordp-any
lib=libxrdpneutrinordp.so
ip=ask
port=ask3390
username=ask
password=ask

; You can override the common channel settings for each session type
#channel.rdpdr=true
#channel.rdpsnd=true
#channel.drdynvc=true
#channel.cliprdr=true
#channel.rail=true
#channel.xrdpvr=true
Score:0
us flag
Bob

If you run service xrdp restart via ssh does it work? Some users have reported that working around the issue.

I think this may be due to a known xrdp issue which has been addressed recently. 1 2 3 4

Essentially, xrdp confuses the handling of IPv4 vs. IPv6 addresses, which prevents the connection from being made. This has been addressed by switching to Unix domain sockets. I don't believe it has been released as a stable version to repositories yet.

I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.