Now that I have apache configured properly, I am trying to get guacamole to
connect to a vnc server (tightvnc) running on the remote machine. Here is the
listen toplogy:
[sudo] password for dnessett:
systemd-r 761 systemd-resolve 13u IPv4 21740 0t0 TCP 127.0.0.53:53
(LISTEN)
cupsd 841 root 6u IPv6 21239 0t0 TCP [::1]:631
(LISTEN)
cupsd 841 root 7u IPv4 21240 0t0 TCP 127.0.0.1:631
(LISTEN)
sslh 1013 sslh 3u IPv4 22309 0t0 TCP *:443 (LISTEN)
vsftpd 1034 root 3u IPv6 22988 0t0 TCP *:21 (LISTEN)
sslh 1065 sslh 3u IPv4 22309 0t0 TCP *:443 (LISTEN)
sshd 1120 root 3u IPv4 26823 0t0 TCP *:22 (LISTEN)
sshd 1120 root 4u IPv6 26825 0t0 TCP *:22 (LISTEN)
mysqld 1159 mysql 27u IPv4 25725 0t0 TCP 127.0.0.1:3306
(LISTEN)
guacd 1312 root 4u IPv4 23546 0t0 TCP 127.0.0.1:4822
(LISTEN)
java 4413 tomcat 41u IPv6 50060 0t0 TCP *:8080 (LISTEN)
Xtightvnc 5990 dnessett 0u IPv4 59523 0t0 TCP *:6001 (LISTEN)
Xtightvnc 5990 dnessett 3u IPv4 59525 0t0 TCP *:5901 (LISTEN)
apache2 6163 root 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6164 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6165 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6166 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6167 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6168 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6173 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6175 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6176 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6193 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
apache2 6320 www-data 4u IPv6 57230 0t0 TCP *:4443 (LISTEN)
This shows that tightvnc is listening on 5901, guacd is listening on 4822, and
tomcat on 8080.
In /etc/guacamole, the guacamole properties are:
# MySQL properties
mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: xxxxxxxxxxxxx
hostname: 127.0.0.1
port: 5901
color-depth: 8
And user-mapping.xml is:
<user-mapping>
<!-- Per-user authentication and config information -->
<authorize
username="dnessett"
password="xxxxxxxxxx"
<!-- First authorized connection -->
<connection name="localhost">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</connection>
</authorize>
</user-mapping
The username and password are copied to the connection settings when I
create/modify the connection for a user I created using
https://server.mountolive.com:22553/guacamole. The connection settings are
shown in the attached screenshot.
Note that the user on the remote machine I am attempting to login to is also
called dnessett. I am perhaps getting confused between the guacd user and the
remote machine user.
Anyway, syslog indicates an authentication failure (I have elided syslog
messages not pertaining to the guacd problem):
Dec 22 13:40:37 Mount guacd[1312]: Creating new client for protocol "vnc"
Dec 22 13:40:37 Mount guacd[1312]: Connection ID is
"$bb639d6b-2dde-4dd6-9b98-f2a9d676f896"
Dec 22 13:40:37 Mount guacd[6306]: Cursor rendering: local
Dec 22 13:40:37 Mount guacd[6306]: User "@52065c88-03c8-4e6d-b71b-8178c5b5f5e7"
joined connection "$bb639d6b-2dde-4dd6-9b98-f2a9d676f896" (1 users now present)
Dec 22 13:40:37 Mount guacd[6306]: VNC server supports protocol version 3.8
(viewer 3.8)
Dec 22 13:40:37 Mount guacd[6306]: We have 2 security types to read
Dec 22 13:40:37 Mount guacd[6306]: 0) Received security type 2
Dec 22 13:40:37 Mount guacd[6306]: Selecting security type 2 (0/2 in the list)
Dec 22 13:40:37 Mount guacd[6306]: 1) Received security type 16
Dec 22 13:40:37 Mount tomcat9[4413]: 13:40:37.623 [http-nio-8080-exec-8] INFO
o.a.g.tunnel.TunnelRequestService - User "dnessett" connected to connection "2".
Dec 22 13:40:37 Mount tomcat9[4413]: 13:40:37.624 [http-nio-8080-exec-8] INFO
o.a.g.t.h.RestrictedGuacamoleHTTPTunnelServlet - Using HTTP tunnel (not
WebSocket). Performance may be sub-optimal.
Dec 22 13:40:37 Mount guacd[6306]: Selected Security Scheme 2
...
Dec 22 13:40:37 Mount guacd[6306]: VNC connection failed: Authentication failed
...
Dec 22 13:40:37 Mount guacd[6306]: Unable to connect to VNC server.
...
Dec 22 13:40:37 Mount guacd[6306]: User "@52065c88-03c8-4e6d-b71b-8178c5b5f5e7"
disconnected (0 users remain)
Dec 22 13:40:37 Mount guacd[6306]: Last user of connection
"$bb639d6b-2dde-4dd6-9b98-f2a9d676f896" disconnected
Dec 22 13:40:37 Mount guacd[1312]: Connection
"$bb639d6b-2dde-4dd6-9b98-f2a9d676f896" removed.
Dec 22 13:40:52 Mount tomcat9[4413]: 13:40:52.700 [http-nio-8080-exec-6] INFO
o.a.g.tunnel.TunnelRequestService - User "dnessett" disconnected from
connection "2". Duration: 15076 milliseconds
Dec 22 13:40:52 Mount tomcat9[4413]: 13:40:52.705 [http-nio-8080-exec-6] ERROR
o.a.g.s.GuacamoleHTTPTunnelServlet - HTTP tunnel request failed: Connection to
guacd timed out.
Also note that guacamole is not using websockets, but is using an http tunnel.
However, the apache VH block specifies:
<VirtualHost *:4443>
ServerName server.mountolive.com
DocumentRoot /mnt/raid5/webserver/sites/MOserver
Header always unset X-Frame-Options
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteRule "^/guacamole$" "/guacamole/" [R=302]
<Directory "/mnt/raid5/webserver/sites/MOserver">
Require all granted
</Directory>
<Location /guacamole/>
ProxyPass http://127.0.0.1:8080/guacamole/ flushpackets=on
ProxyPassReverse http://127.0.0.1:8080/guacamole/
</Location>
<Location /websocket-tunnel>
ProxyPass ws://127.0.0.1:8080/guacamole/websocket-tunnel
ProxyPassReverse ws://127.0.0.1:8080/guacamole/websocket-tunnel
</Location>
SSLEngine on
SSLCertificateFile /root/.acme.sh/*.mountolive.com/fullchain.cer
SSLCertificateKeyFile
/root/.acme.sh/*.mountolive.com/*.mountolive.com.key
</VirtualHost>
[Note that I put the two <Location> blocks in the right order, as given in the
mod_proxy instructions]
I am getting really confused about how to configure the correct authentication
information. Do I supply the username and password of the user on the remote
machine in user-mapping.xml and the connection setup or do I supply the
guacamole username and password?