Aktionen

Ubuntu 18.04.x LTS - Guacamole HTML5 Remotedesktop Gateway installieren mit Apache Reverse Proxy

Aus znilwiki

Changelog:

  • 12.01.2019: Erste Version des Artikel mit Gucamole Version 1.0.0
  • 19.01.2019: LDAP Konfiguration hinzugefügt
  • 14.05.2019: Fehlerbehebung bei Datenbankanbindung (leerer Login-Screen) hinzugefügt
  • 09.12.2019: Anleitung verifiziert mit Guacamole Version 1.0.0 (immer noch die aktuelle Version zu diesem Zeitpunkt)

Nach diversen Versuchen über einen Webrowser per RDP auf eine Windows VM zu zugreifen habe ich im Internet Guacamole gefunden.

http://guac-dev.org/

Es handelt sich dabei um ein HTML5 Gateway über das man per RDP, VNC und SSH auf andere Systeme zugreifen kann.
In dieser Anleitung installiere ich Guacamole auf einen bestehenden Webserver in einer Subdomain.
Das ist bereits die 3. Version dieses Artikel (nach Ubuntu 14.04 und 16.04).



1 Ausgangslage

Ich habe hier einen ESXi Server auf dem eine VM mit dem Namen WEBSERVER02 mit Apache2 als Webserver läuft (IP: 10.100.12.10).
Nach der Installation kann man von extern über eine Subdomain remote.znil.org auf die Guacamole-Webseite per https:// zugreifen.
Guacamole ist auch in den Paketquellen von Ubuntu 18.04. enthalten - jedoch in der alten Version 0.9.9, nicht in der aktuellen 1.0.0 (dazwischen gibt es 5 weitere Versionen).
Also doch selbst Hand anlegen!

Important.png
Hinweis: Wer wie ich ISPConfig für die Verwaltung einsetzt sollte vorher den Port der Management-Oberfläche vom Port 8080 auf einen anderen, z.B. 8443 verschieben. Das geht über das bearbeiten der Datei
nano /etc/apache2/sites-available/ispconfig.vhost
mit anschließendem Neustart des Apache




2 Vorwort

In dieser Anleitung wird der Server Schritt-für-Schritt installiert - zuerst auf Port 8080 mit lokaler XML-Datei für die Benutzer, dann der Umbau auf MySQL, Port 80/443, dann LDAP usw.
Bitte, bitte macht das auch so - einen Schritt nach dem anderen. So wird es bei der Fehlersuche einfacher - und ihr habe zuerst mal ein Erfolgserlebnis.
Was Ihr nicht braucht lasst Ihr weg - LDAP, 2FA usw.


3 Ich arbeite als root

Alle nachfolgenden Befehle müssen als Benutzer root ausgeführt werden!
Wenn ihr nicht sowieso schon root seit empfehle ich ein

sudo -i

damit Ihr eine dauerhafte root-Sitzung habt.


4 Voraussetzungen installieren

apt install make libssh2-1-dev libtelnet-dev libpango1.0-dev libossp-uuid-dev libcairo2-dev libpng-dev freerdp-x11 libssh2-1 libvncserver-dev libfreerdp-dev libvorbis-dev libssl1.0.0 gcc libssh-dev libpulse-dev tomcat8 tomcat8-admin tomcat8-docs ghostscript libwebp-dev libavcodec-dev libavutil-dev libswscale-dev

Danach sollte der Tomcat bereits auf Port 8080 lauschen - wenn ihr also

http://servername-oder-ip:8080

aufruft kommt die Standardseite von Tomcat:
ClipCapIt-160907-132601.PNG



5 Guacamole herunterladen und kompilieren



5.1 Release Version

Bei der Erstellung im Januar 2019 dieses Artikels war die Version

Guacamole 1.0.0

aktuell - ggf. müsst ihr die Namen und Pfade anpassen wenn Ihr eine neuere Version nehmt.

cd /usr/src
wget http://mirror.ibcp.fr/pub/apache/guacamole/1.0.0/source/guacamole-server-1.0.0.tar.gz
wget http://mirror.ibcp.fr/pub/apache/guacamole/1.0.0/binary/guacamole-1.0.0.war

Damit haben wir den Quellcode des Servers und die .war Datei des Clients heruntergeladen.
Dann den Quellcode noch entpacken:

tar xvzf guacamole-server-1.0.0.tar.gz





6 Kompilieren

cd /usr/src/guacamole-server-1.0.0
./configure --with-systemd-dir=/etc/systemd/system

Nach viel Text (die ganzen Checks) müsste am Ende eine Meldung wie folgt kommen:

------------------------------------------------
guacamole-server version 1.0.0
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libavcodec .......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebp ............. yes
     wsock32 ............. no

   Protocol support:

      RDP ....... yes
      SSH ....... yes
      Telnet .... yes
      VNC ....... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes
      guaclog .... yes

   Init scripts: no
   Systemd units: /etc/systemd/system

Type "make" to compile guacamole-server.

Wenn da irgendwo NICHT yes steht da fehlt ein Paket aus den Voraussetzungen! Bei der Überarbeitung dieses Artikels wurden da welche hinzugefügt!
Wenn da über yes steht -> Prima! Also kompilieren und installieren wir:

make
make install




7 Test Server

Er hat uns nun ein Systemd-Start-Script hinterlegt mit welchen wir den Dienst probeweise einmal starten:

systemctl start guacd.service

Der Start schlägt aber fehl, das können wir prüfen mit:

systemctl status guacd.service

Ausgabe:

● guacd.service - Guacamole Server
   Loaded: loaded (/etc/systemd/system/guacd.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2019-01-12 12:17:44 CET; 6s ago
     Docs: man:guacd(8)
  Process: 24015 ExecStart=/usr/local/sbin/guacd -f (code=exited, status=127)
 Main PID: 24015 (code=exited, status=127)

Deshalb geben wir einfach ein

ldconfig
systemctl start guacd.service

ein und nun geht es:

systemctl status guacd.service

Ausgabe:

● guacd.service - Guacamole Server
   Loaded: loaded (/etc/systemd/system/guacd.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-01-12 12:18:33 CET; 4s ago
     Docs: man:guacd(8)
 Main PID: 24057 (guacd)
    Tasks: 1 (limit: 2320)
   CGroup: /system.slice/guacd.service
           └─24057 /usr/local/sbin/guacd -f

Jan 12 12:18:33 webserver02.znil.local systemd[1]: Started Guacamole Server.
Jan 12 12:18:33 webserver02.znil.local guacd[24057]: Guacamole proxy daemon (guacd) version 1.0.0 started
Jan 12 12:18:33 webserver02.znil.local guacd[24057]: guacd[24057]: INFO:        Guacamole proxy daemon (guacd) version 1.0.0 started
Jan 12 12:18:33 webserver02.znil.local guacd[24057]: Listening on host 127.0.0.1, port 4822
Jan 12 12:18:33 webserver02.znil.local guacd[24057]: guacd[24057]: INFO:        Listening on host 127.0.0.1, port 4822


Wir beenden den Server aber gleich wieder:

systemctl stop guacd.service

da wir erst einmal die Konfigurationsdateien anlegen müssen.



8 Guacamole Server konfigurieren

Wir legen das Verzeichnis für die Konfigurationsdateien an das Guacamole erwartet:

mkdir /etc/guacamole

und erstellen die Server-Konfigurationsdatei:


8.1 guacamole.properties

Nun erstellen wir die Datei:

nano /etc/guacamole/guacamole.properties

Inhalt ist nur diese eine Zeile:

basic-user-mapping: /etc/guacamole/user-mapping.xml




8.2 user-mapping.xml

Wir haben ja gerade zuvor die Datei angegeben in welcher die

  • Benutzernamen
  • Kennwörter
  • verfügbare RDP / VNC / Telnet und SSH Verbindungen

konfiguriert werden. Also müssen wir die auch anlegen:

nano /etc/guacamole/user-mapping.xml

Inhalt der Datei - müsst Ihr an eure Bedürfnisse anpassen. Im Zweifelsfall löscht überflüssige Parameter. Wenn z.B. Benutzername und Password nicht angegeben werden fragt er danach.

<user-mapping>

    <!-- Pro Benutzer gibt es einen Abschnitt für Benutzername, Passwort -->
    <!-- und den verfügbaren Verbindungen für diesen Benutzer -->

    <!-- Benutzer Administrator-->
    <authorize username="admin" password="geheimesPasswort">

        <!-- Verbindung 1 für Benuter admin -->
        <!-- RDP - Remotedesktop-Verbindung -->
        <!-- Parameter siehe https://guacamole.apache.org/doc/gug/configuring-guacamole.html#rdp -->
        <connection name="Windows Server 2016 Test VM">
                <protocol>rdp</protocol>
                <param name="hostname">10.100.12.91</param>      <!-- FQDN oder IP des Zielhost -->
                <param name="port">3389</param>                   <!-- Port, Standard ist 3389 -->
                <param name="username">Testbenutzer</param>       <!-- Anmeldename / Benutzername -->
                <param name="password">password123</param>        <!-- Password für den Benutzer -->
                <param name="domain">TEST-VM</param>              <!-- Domäne des Benutzer, ggf. Hostname des Ziels -->
                <param name="disable-audio">true</param>          <!-- Audio-Übertragung deaktivieren -->
                <param name="server-layout">de-de-qwertz</param>  <!-- mit deutscher Tastatur verbinden -->
                <param name="security">any</param>                <!-- sonst nimmt er nur RDP und W2012R2, W2016 oder W10 funktionieren nicht-->
                <param name="ignore-cert">true</param>            <!-- alle Zertifikate akzeptieren -->
        </connection>

        <!-- Verbindung 2 für Benuter admin -->
        <!-- SSH - Verbindung -->
        <!-- Parameter siehe https://guacamole.apache.org/doc/gug/configuring-guacamole.html#ssh -->
        <connection name="SSH Webserver">
                <protocol>ssh</protocol>
                <param name="hostname">192.168.42.10</param>      <!-- FQDN oder IP des Zielhost -->
                <param name="port">22</param>                     <!-- Port, Standard ist 22 -->
                <param name="username">user23</param>             <!-- Anmeldename / Benutzername -->
                <param name="password">password123</param>        <!-- Password für den Benutzer -->
        </connection>
    </authorize>
</user-mapping>



9 GUACAMOLE_HOME setzen

Die neue Version sucht in dieser Umgebungsvariablen nach dem Pfad der Konfigurationsdateien:

nano /etc/environment

und die folgende Zeile anhängen:

GUACAMOLE_HOME="/etc/guacamole"


Ein reboot an dieser Stelle schadet nicht!


10 Automatischen Start des Servers einrichten

Wir nehmen den Dienst in den automatischen Start auf:

systemctl enable guacd.service

Das für systemctl notwendige Startskript hat er uns ja schon beim installierten (make install) angelegt.



11 Fehler Dateiaustausch und Audio beheben

Guacamole kann in einer SSH oder RDP Sitzung auch Audiosignale weitereichen oder den Drucker nutzen.
Noch interessanter finde ich den Up- oder Download von Dateien aus der Sitzung, insbesondere bei RDP.
So wie wir bis jetzt installiert haben funktioniert das aber nicht da das genutzte FreeRDP 3 Plugins von Guacamole nicht finden kann.
Den Fehler beheben wir mit den nächsten Zeilen:

ln -s /usr/local/lib/freerdp/guacdr-client.so /usr/lib/x86_64-linux-gnu/freerdp/
ln -s /usr/local/lib/freerdp/guacsnd-client.so /usr/lib/x86_64-linux-gnu/freerdp/
ln -s /usr/local/lib/freerdp/guacsvc-client.so /usr/lib/x86_64-linux-gnu/freerdp/




12 Guacamole Client installieren

Den Client haben wir vorhin schon mit herunter geladen und müsste nun unter

/usr/src/guacamole-1.0.0.war

bereit liegen.
Kopieren wir diese an Ihren Bestimmungsort:

cp /usr/src/guacamole-1.0.0.war /var/lib/tomcat8/webapps/guacamole.war


Der Client sucht guacamole.properties und andere Konfigurationsdateien - allerdings an einem anderen Ort als wir diese abgelegt haben.
Deshalb legen wir einen symbolischen Link dahin an:

ln -s /etc/guacamole /usr/share/tomcat8/.guacamole


Nun müssen wir den Tomcat neu starten:

systemctl restart tomcat8.service


Important.png
Hinweis:Eventuell braucht es nun etwas Geduld! Bei mir hat es etwa 10 Minuten gedauert bis der Tomcat8 nach einem Restart oder dem reboot des Servers wieder ansprechbar war. Dazu gibt zum einen die Lösung apt install haveged oder die Änderungen der Startparameter von Tomcat: https://askubuntu.com/questions/650482/tomcat-8-does-not-start-immediately-after-a-reboot
Das mit dem Skript hat bei mir einwandfrei funktioniert. haveged wollte ich nicht installieren da es auch apparmor mit installiert.




13 Der erste Test

Wir starten den Dienst wieder:

systemctl start guacd.service

Wir können nun auf die Webseite des Clients zugreifen:

http://FQDN-oder-IP:8080/guacamole/


ClipCapIt-190112-131121.PNG


Und melden uns mit dem gerade angelegten Benutzer an:

ClipCapIt-190112-131224.PNG

Ein Klick auf die Verbindungen unten startet jeweils die ausgewählte Verbindung:

ClipCapIt-190112-131720.PNG

Mit den Zurück Button des Browser geht es wieder ins das Menü - die Verbindung bleibt dann aber erhalten. Besser ist die Sitzung richtig zu beenden, bei RDP also abmelden.


Falls der Logon-Screen nur leer ist - also keine Anmeldemaske erscheint führt als root folgendes aus:

mysql
SET GLOBAL time_zone = '+1:00';
quit
systemctl restart tomcat8.service

Der Fehler steht im Log:

cat /var/log/tomcat8/catalina.out | grep java.sql.SQLException

Ausgabe:

### Error querying database.  Cause: java.sql.SQLException: The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Das ist ein bekannter Fehler im SQL-Treiber.


14 Logdateien auswerten

14.1 Für den GUACD-Prozessen

Wenn mal etwas nicht wie geplant funktioniert bei einer Verbindung so können wir hierzu in das syslog schauen.

tail -f /var/log/syslog


Falls euerr Server mehr zu tun hat und das Syslog entsprechend ständig zu tun hat empfiehlt es sich die Ausgabe auf die Guacamole-Meldungen zu filtern:

tail -f -n 200 /var/log/syslog | grep guacd


Beispielausgabe beim Aufbau einer RDP-Verbindung:

May  8 10:16:54 web01 guacd[20582]: Protocol "rdp" selected
May  8 10:16:54 web01 guacd[20582]: Connection ID is "$b5f8f9d9-1ab8-49bc-a5ea-970015a30a21"
May  8 10:16:54 web01 guacd[20582]: Security mode: ANY
May  8 10:16:54 web01 guacd[20582]: Loading keymap "base"
May  8 10:16:54 web01 guacd[20582]: Loading keymap "de-de-qwertz"
May  8 10:16:54 web01 guacd[20582]: Starting client
May  8 10:16:54 web01 guacd[20582]: guacdr connected.
May  8 10:16:54 web01 guacd[20582]: guacsnd connected.
May  8 10:16:54 web01 guacd[20582]: Connected to RDPDR 1.12 as client 0x0007
May  8 10:16:54 web01 guacd[20582]: Ignoring server capability set type=0x0001, length=44
May  8 10:16:54 web01 guacd[20582]: Ignoring server capability set type=0x0002, length=8
May  8 10:16:54 web01 guacd[20582]: Ignoring server capability set type=0x0003, length=8
May  8 10:16:54 web01 guacd[20582]: Ignoring server capability set type=0x0004, length=8
May  8 10:16:54 web01 guacd[20582]: Ignoring server capability set type=0x0005, length=8
May  8 10:16:54 web01 guacd[20582]: Sending capabilities...
May  8 10:16:54 web01 guacd[20582]: Capabilities sent.
May  8 10:16:54 web01 guacd[20582]: Client ID confirmed
May  8 10:16:58 web01 guacd[20582]: User logged on
May  8 10:16:58 web01 guacd[20582]: Sending printer
May  8 10:16:58 web01 guacd[20582]: Registered device 0 (Guacamole Printer)
May  8 10:16:58 web01 guacd[20582]: Sending filesystem
May  8 10:16:58 web01 guacd[20582]: Registered device 1 (Guacamole Filesystem)
May  8 10:16:58 web01 guacd[20582]: All supported devices sent.
May  8 10:16:58 web01 guacd[20582]: Device 0 (Guacamole Printer) connected successfully
May  8 10:16:58 web01 guacd[20582]: Device 1 (Guacamole Filesystem) connected successfully
May  8 10:17:00 web01 guacd[20582]: Accepted format: 16-bit PCM with 2 channels at 44100 Hz


Im Syslog findet Ihr Information zu den Aufbau der Verbindungen (RDP, SSH, VNC und Telnet), nicht aber zu den Anmeldungen auf dem Webinterface.


14.2 Für das Client-Plugin

Alles was mit dem Webinterface zu tun hat findet Ihr woanders:

tail -n 200 -f /var/log/tomcat8/catalina.out



15 Apache Reverse Proxy

So, nun wollen wir das ganze über eine Subdomain und mit SSL Verschlüsselung über https von extern erreichen.
In Apache lege ich einen neuen .vHost an und verpasse diesem ein SSL Zertifikat.
Wie das geht?
Entsprechende Datei unter /etc/apache2/sites-available anlegen:

touch /etc/apache2/sites-available/remote.znil.net.vhost

Mit dem nachfolgenden Inhalt füllen (nächster Abschnitt, erst machen!).
Ein SSL-Zertifkat könnt Ihr z.B. nach folgender Anleitung erstellen: https://thomas-leister.de/apache-webserver-ssl-verschlusselung-einrichten/
Seite aktivieren:

a2ensite remote.znil.net.vhost

und den Apache neu starten:

systemctl restart apache2.service


Ich benutze für das ganze ISPConfig und bearbeite die .vhost dann nur noch manuell.



16 Apache .vhost anpassen

Important.png

Hinweis: Leider macht die ein oder andere Firmenfirewall ärger bei der Verbindung zu Guacamole. Insbesondere solche die den Datenverkehr trotz SSL zerlegen und überwachen. Es kann helfen wenn man den proxy_wstunnel und dessen Konfiguration, also den Abschnitt <Location /websocket-tunnel> weglässt, dann wird nur "normales" http verwendet.

Ob das mit dem Websockets möglich ist kann man unter http://websocketstest.com/ testen (vom Client der später darauf zugreifen soll


Auf eurem Apache müssen die Module für den Proxy und das Rewrite aktiv sein, falls das noch nicht der Fall ist:

a2enmod rewrite
a2enmod proxy_http
a2enmod ssl
a2enmod proxy_wstunnel


Da ich das ganze unter einer Subdomain betreibe habe ich für diese eine eigene .vhost Datei

nano /etc/apache2/sites-available/remote.znil.net.vhost

Wenn ihr das ohne macht bzw. das ganze in einem virtuellen Verzeichnis haben wollt müsst ihr ggf. die Standard .vhost von Apache anpassen.

Den Inhalt der .vhost ändere ich wie folgt:

<VirtualHost 10.100.12.10:80>
        ServerName remote.znil.net
        ServerAdmin webmaster@znil.net

        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>


<VirtualHost 10.100.12.10:443>
        ServerName remote.znil.net
        ServerAdmin webmaster@znil.net

        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3
        SSLCertificateFile /var/www/clients/client0/web14/ssl/remote.znil.net.crt
        SSLCertificateKeyFile /var/www/clients/client0/web14/ssl/remote.znil.net.key
        SSLCertificateChainFile /var/www/clients/client0/web14/ssl/remote.znil.net.bundle

        ProxyPass / http://10.100.12.10:8080/guacamole/ flushpackets=on
        ProxyPassReverse / http://10.100.12.10:8080/guacamole/
        ProxyPassReverseCookiePath /guacamole /
        <Location /websocket-tunnel>
                Order allow,deny
                Allow from all
                ProxyPass ws://10.100.12.10:8080/guacamole/websocket-tunnel
                ProxyPassReverse ws://10.100.12.10:8080/guacamole/websocket-tunnel
        </Location>
        SetEnvIf Request_URI "^/tunnel" dontlog
        CustomLog  /var/log/apache2/guac.log common env=!dontlog
</VirtualHost>

Ihr müsstet folgendes anpassen:

  • IP-Adresse eures Apache Servers
  • Name eurer Subdomain
  • Pfad zu den SSL-Dateien
  • IP-Adresse zum Guacamole-Server


Nach einem Neustart des Apache

systemctl reload apache2.service

könnt Ihr nun über eben diese darauf zugreifen:

https://remote.znil.net




17 Bedienung von Guacamole

Wenn Ihr in einer Sitzung seit (egal ob RDP, SSH, VCN oder Telnet) drückt einmal die Tastenkombination

STRG - ALT - SHIFT


Dann erscheint ein Menü mit weiteren Punkten und z.B. einer Zwischenablage oder der Möglichkeit die Verbindung auch einfach nur zu trennen:
ClipCapIt-160907-162035.PNG



18 Umbau auf MySQL Datenbank

Immer wenn wir einen neuen Host hinzufügen wollen oder einen Benutzer oder sogar beides müssen wir jedesmal die

nano /etc/guacamole/user-mapping.xml

bearbeiten - und dann mit

systemctl restart tomcat8.service

alles neu starten - wobei aktive Verbindungen unterbrochen werden usw. ... und gerade bin ich an einem & in der XML Datei fast verzweifelt ....

Wenn wir Gucamole mit MySQL verbinden können wir die Konfiguration dynamisch ohne Neustart ändern - und das ganze auch noch in der Weboberfläche machen.
Also her damit!



18.1 MySQL installieren

Falls es noch nicht auf eurem Server ist muss MySQL erst einmal installiert werden:

apt-get install mysql-server mysql-client



18.2 MySQL Extension herunterladen und entpacken

Also, wir haben hier die Version

1.0.0

installiert - also brauchen wir auch die Extension in der passenden Version dazu:

https://guacamole.apache.org/releases/1.0.0/
Important.png
Hinweis: Bis zur Version 0.9.5 gabe es eine extra MySQL Version - ab 0.9.6 ist diese in der JDBC-Version!




Also wechseln wir wieder in src' Verzeichnis und laden es direkt herunter:

cd /usr/src/
wget http://mirror.ibcp.fr/pub/apache/guacamole/1.0.0/binary/guacamole-auth-jdbc-1.0.0.tar.gz
tar xvzf guacamole-auth-jdbc-1.0.0.tar.gz
cd guacamole-auth-jdbc-1.0.0/mysql/




18.3 Lib-Dateien kopieren

Die Datei guacamole-auth-jdbc-mysql-1.0.0.jar aus dem Unterverzeichnis

/usr/src/guacamole-auth-jdbc-1.0.0/mysql/

müssen in das Erweiterungsverzeichnis kopieren.
Standard ist

GUACAMOLE_HOME/extensions

Hier also

/etc/guacamole/extensions

also dorthin damit:

mkdir /etc/guacamole/extensions
cp /usr/src/guacamole-auth-jdbc-1.0.0/mysql/guacamole-auth-jdbc-mysql-1.0.0.jar /etc/guacamole/extensions/




18.4 MySQL Connector herunterladen und kopieren

Guacamole braucht unbedingt eine

mysql-connector-java-x.x.xx-bin.jar

die wir leider erst einmal haben müssen. In der offziellen Anleitung wird der Hinweis auf die MySQL Homepage gegeben: https://dev.mysql.com/downloads/connector/j/

cd /usr/src/
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.13.tar.gz
tar xvzf mysql-connector-java-8.0.13.tar.gz
mkdir /etc/guacamole/lib
cp /usr/src/mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar /etc/guacamole/lib/



18.5 MySQL Datenbank und Benutzer anlegen

Nun brauchen wir noch eine Datenbank mit passenden Benutzer dazu:

mysql -u root -p -e "create database guacamole"
mysql -u root -p -e "grant all on guacamole.* to guacamole@localhost identified by 'guacamole'"


Es gibt nun also die Datenbank guacamole auf die der Benutzer guacamole mit dem Passwort guacamole Zugriff hat.
Keine Angst - der kann nur local auf die Datenbank zugreifen, ein Zugriff aus dem Internet ist nicht möglich.



18.6 Schema in MySQL importieren

Die liegen unter

/usr/src/guacamole-auth-jdbc-1.0.0/mysql/schema

und müssen nur importiert werden - am besten gleich unter unserem neu anlegten Benutzer:

mysql -uguacamole -pguacamole guacamole < /usr/src/guacamole-auth-jdbc-1.0.0/mysql/schema/001-create-schema.sql
mysql -uguacamole -pguacamole guacamole < /usr/src/guacamole-auth-jdbc-1.0.0/mysql/schema/002-create-admin-user.sql




18.7 guacamole.properties an MySQL anpassen

Nun müssen wir noch die Konfigurationsdatei ändern.

nano /etc/guacamole/guacamole.properties

und den Inhalt wie folgt ändern (alles andere löschen):

# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole
mysql-username: guacamole
mysql-password: guacamole


Nun noch den Tomcat neu starten:

systemctl restart tomcat8.service



18.8 An der Webseite Anmelden

Wir melden uns nun an der Guacamole Webseite folgenden Daten an:

Benutzername: guacadmin
Passwort:     guacadmin
ClipCapIt-171102-222340.PNG


Oben Rechts ist das Menü in welchem Ihr die Settings aufrufen solltet:

ClipCapIt-190112-135300.PNG

Geht dann auf den Reiter Einstellungen:
Dort verpasst Ihr diesem erst einmal ein neues Passwort:

ClipCapIt-190112-135421.PNG

Ich empfehle einen neuen Administrations-Benutzer anzulegen und den guacadmin zu löschen oder zu deaktivieren.


19 LDAP / Active Directory Authentifizierung

In früheren Version von Guacamole musste man das Schema des Active Directory / LDAP erweitern und die Verbindungsdaten zu den Servern wurden bei den Benutzern in Eigenschaften gespeichert.
War mir zu umständlich. In den neueren Versionen kann man LDAP auch nur für die Authentifizierung nehmen und die Verbindungsdaten weiterhin in der MySQL Datenbank speichern - viel besser.

Die lokalen Benutzer funktionieren parallel zu den LDAP-Benutzern.

19.1 Plugin LDAP installieren

Der erste Schritt ist also das Ihr wie zuvor beschrieben den Umbau auf die MySQL-Datenbank vornehmen. Wenn Ihr das gemacht habt und es funktioniert könnt Ihr in diesem nächsten Schritt auf LDAP erweitern.

Dazu müssen wir eine weitere Guacamole-Extension herunterladen und installieren.
Also wechseln wir wieder in src' Verzeichnis und laden es direkt herunter:

cd /usr/src/
wget http://mirror.ibcp.fr/pub/apache/guacamole/1.0.0/binary/guacamole-auth-ldap-1.0.0.tar.gz
tar xvzf guacamole-auth-ldap-1.0.0.tar.gz
cp /usr/src/guacamole-auth-ldap-1.0.0/guacamole-auth-ldap-1.0.0.jar /etc/guacamole/extensions/


Jetzt müssen wir den Zugriff auf das Active Directory / LDAP konfigurieren:

nano /etc/guacamole/guacamole.properties

und fügt die folgenden Zeilen hinzu, die Daten für die SQL-Datenbank NICHT löschen!:

#LDAP Einstellungen für Active Directory
#IP-Adresse oder DNS-Name eines Domänencontrollers
ldap-hostname: 10.100.12.50
#Port Nummer von LDAP, 389=unverschlüsselt
ldap-port: 389
#Verschlüsslungsmethode für LDAP-Verbindung
ldap-encryption-method: none
#DN des Benutzer der für die Abfrage genutzt werden
ldap-search-bind-dn: CN=ldapSearch,OU=Funktionsbenutzer,DC=znil,DC=local
#Passwort des Benutzers der für die Abfrage genutzt werden soll
ldap-search-bind-password: eingeheimesPasswort
#Startpunkt für die Suche im Active Directory
ldap-user-base-dn: DC=znil,DC=local
#Mit welcher Eigenschaft soll der Benutzername verglichen werden?
ldap-username-attribute: samAccountName
#Verknüpfungen bei der LDAP-Abfrage nicht folgen (mit true funktioniert es gegen ein AD nicht)
ldap-follow-referrals: false
# Timeout für die Abfrage, für z.B. duo.com erhöhen
ldap-operation-timeout: 30

Als Benutzer der für die Verbindung zum AD reicht ein normaler Benutzer ohne besondere Rechte. Ihr sollten dafür extra einen anlegen.
Den DN des Benutzer bekommt ihr wie folgt raus:

  • Eingabeaufforderung (DOS-Box) auf einem Domänencontroller öffen
dsquery user -name Benutzername


Wenn Ihr die Datei speichert und den Tomcat wieder neu startet:

systemctl restart tomcat8.service

solltet Ihr euch mit jedem beliebigen Domänen-Benutzer am Guacamole anmelden können (habt aber noch keine Verbindungen).


19.2 Zugriff auf OU beschränken

Wollte Ihr das nur Benutzer unterhalb einer bestimmten OU sich anmelden können so ändert die folgenden Zeile:

ldap-user-base-dn: DC=znil,DC=local

auf den DN der OU unterhalb der die Benutzer abgelegt sind.


19.3 Zugriff auf Mitglieder einer AD-Gruppe beschränken

Wenn Ihr die folgenden Zeilen ergänzt können nur noch Mitglieder dieser Gruppe sich am Guacamole anmelden:

#Bei Bedarf: Nur Mitglieder einer bestimmten Gruppe dürfen sich anmelden
ldap-user-search-filter: (&(objectClass=*)(memberOf=CN=duocomradius,OU=4.Funktionsgruppen,DC=znil,DC=local))

Den Wert hinter memberOf= müsst Ihr mit dem DN eurer Gruppe ersetzen.
Den könnt Ihr genauso wie die DN des Benutzers abfragen:

dsquery group -name Gruppenname



19.4 Den AD-Benutzer / LDAP-Benutzern Verbindungen zuweisen

Die Benutzer aus dem Active Directory können sich zwar nun alle am Guacamole anmelden - haben aber noch keine Verbindungen.
Diese können wir wie folgt zuweisen:

  • Ihr erstellt einen neuen lokalen Benutzer in der Guacamole-Administrationkonsole
  • Dieser muss den gleichen Benutzernamen / Anmeldennamen wie im AD haben
  • Das Passwort ist egal - lang und zufällig
  • Dem Benutzer könnt Ihr die Verbindungen ganz unten zuweisen ODER ihn zum Mitglied in den lokalen Gruppen machen denen Ihr die Verbindungen zuweist.

Bei der Anmeldung prüft Guacamole zuerst ob es einen LDAP-Benutzer findet und ob das Passwort für diesen funktioniert.
Gibt es den Namen auch in der lokalen MySQL-Datenbank so nimmt er die Einstellungen dazu.


20 2FA Google Authenticator Unterstützung TOTP

Important.png

Hinweis:Diese Modul funktioniert nur in Verbindung mit der Benutzung einer Datenbank für die Benutzerauthentifizierung, nicht mit anderen Methoden wie der .xml Datei oder LDAP.

Sie funktioniert zwar parallel zu LDAP, die Anzeige des QR-Codes erhalten aber nur lokale Benutzer, keine LDAP Benutzer


Dazu müssen wir eine weitere Guacamole-Extension herunterladen und installieren.
Also wechseln wir wieder in src' Verzeichnis und laden es direkt herunter:

cd /usr/src/
wget http://mirror.ibcp.fr/pub/apache/guacamole/1.0.0/binary/guacamole-auth-totp-1.0.0.tar.gz
tar xvzf guacamole-auth-totp-1.0.0.tar.gz
cp /usr/src/guacamole-auth-totp-1.0.0/guacamole-auth-totp-1.0.0.jar /etc/guacamole/extensions/


Das war es schon - nun den Tomcat einmal neu starten:

systemctl restart tomcat8.service


Wenn Ihr euch nun neu an der Guacmole-Webseite anmeldet erscheint der QR-Code zum abscannen:

ClipCapIt-190112-170834.PNG

Eure App wird das dann als "Apache Guacamole" erkennen.
Wer da einen eigenen Namen hinterlegen will, z.B. "Musterfirma" macht einen Eintrag in die

nano /etc/guacamole/guacamole.properties

und folgendes Ergänzen (zusätzlich zur Datenbank-Konfiguration!):

## TOTP-Einstellungen
#Bezeichnung des Codes in der App
totp-issuer: remote.znil.org
#Anzahl der Zahlen
totp-digits: 6
#Neuer Code alle xx Sekunden
totp-period: 30
# Hash Algorithmus - "sha1", "sha256" oder "sha512"
totp-mode: sha1

In der App erscheint bei obigen Einstellungen der Eintrag als

remote.znil.org - Benutzername


Siehe auch die offizielle Anleitung zu dem Thema: https://guacamole.apache.org/doc/gug/totp-auth.html


21 Duo 2-Faktor Authentifizierung

Dafür gibt es wieder ein eigenes Plugin. Dieses arbeitet mit allen Methoden (XML, MySQL, LDAP) zusammen.

wget http://mirror.ibcp.fr/pub/apache/guacamole/1.0.0/binary/guacamole-auth-duo-1.0.0.tar.gz
tar xvzf guacamole-auth-duo-1.0.0.tar.gz
cp /usr/src/guacamole-auth-duo-1.0.0/guacamole-auth-duo-1.0.0.jar /etc/guacamole/extensions/

Dann Installiert Ihr pwgen

apt install pwgen

und erzeugt einen neuen Schlüssel den Ihr euch wegkopiert:

pwgen 40 1
nooy1eij5uaxe4die1ohWah2iey9vaiy8seiK5Tu

Auf Duo.com fügt Ihr die Application "Web SDK" hinzu:

ClipCapIt-190119-213635.PNG

dann

nano /etc/guacamole/guacamole.properties

und den folgenden Abschnitt hinzufügen:

##Duo Security
duo-integration-key: XXXXXXXXXXXXXXXXXXXX
duo-secret-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
duo-api-hostname: api-xxxxxxxxx.duosecurity.com
duo-application-key: nooy1eij5uaxe4die1ohWah2iey9vaiy8seiK5Tu

Beim letzten Eintrag fügt Ihr den zuvor erfolgten Schlüssel ein. Es geht nur darum das jeden Anwendung die auf Duo zugreift einen eindeutigen Schlüssel braucht.


22 Dateiaustausch in Remotedesktop Sitzungen

Eine richtig tolles Feature ist der Dateiaustausch bei RDP-Sitzungen.
Obwohl das ganze in einem eingeschränktem Webbrowser läuft bekommt man so sehr leicht eine Datei hoch- oder runtergeladen.


22.1 Vorbereitung

Wir benötigen mindestens einen Ordner auf unserem Linux-Host für den Dateiaustausch:

mkdir /home/tausch
chmod 777 /home/tausch

Der Benutzer unter dem der Dienst guacd läuft muss volle Zugriffsrechte auf diesen Ordner haben.
Wenn Ihr nichts geändert habt läuft der Dienst als Benutzer root - und habt auch als dieser den Ordner angelegt.


22.2 Konfiguration der Verbindung

In einer RDP-Verbindung wählen wir nun folgende Optionen

Enable drive .............: X
Drive path ...............: /home/tausch
Automatically create drive: X


ClipCapIt-160907-204713.PNG


Das ist schon alles. Sind wir nun Verbunden wird uns der Ordner unter dem Arbeitsplatz angezeigt:

Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-012.png


Zum Testen zieht nun einfach eine Datei in das Browserfenster:

Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-013.png

Die Dateien erscheinen dann innerhalb des Ordners - ggf. einmal F5 drücken.

Wollt Ihr eine Datei herunterladen so schiebt diese einfach in den Order Download:

Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-014.png Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-015.png


Er lädt die Datei dann runter und mit dem Klick auf den Link könnt Ihr diese lokal speichern.



23 Kommentare


andreas.mueck@stmwi.bayern.de

17 Monaten zuvor
Punktzahl 0++
Vielen, vielen herzlichen Dank für diese Anleitung! Um es mit einem Fernseh-Klassiker zu sagen: Wir sind der Meinung, das ist … SPITZE!!!!

Ronald

17 Monaten zuvor
Punktzahl 0++

Vielen herzlichen Dank für die Anleitung. Ein kleiner Fehler ist am Anfang: im Punkt 5 muss es natürlich heißen "cd /usr/src/guacamole-server-1.0.0/"

Sonst hat alles einwandfrei auf einem Ubuntu 18.04.2 LTS funktioniert.

Ein LDAP-Anbindung: Wenn man einen administrativen User erstellt der vom AD kommt und sich mit diesem dann anmeldet braucht man keine weiten lokalen User anzulegen. Dieser User sieht alle AD-User und man kann direkt den AD-Usern Verbindungen und Rechte zuweisen.

Was mir noch fehlt ist die LDAP-Anbindung per LDAPs/Port 636, Angabe einen 2. AD-Controllers und ein WOL der Remotedesktops.

BLinz

17 Monaten zuvor
Punktzahl 0++
Punkt 5 ist geändert, das kommt vom Recycling alter Artikel.

reiner.loeffel@gmail.com

13 Monaten zuvor
Punktzahl 0++

Punkt 5 ist wieder der Fehler drinnen

Punkt 6 Es wird kein Systemd-Start-Script erzeugt

BLinz

12 Monaten zuvor
Punktzahl 0++
Ist angepasst, nun wird die systemd-Startdatei erzeugt.

holgerlist@gmx.de

10 Monaten zuvor
Punktzahl 0++

SUPER Anleitung. Danke für deine Arbeit :-)

Ich habe keinen Fehler gefunden

info@dietzmaxi.de

9 Monaten zuvor
Punktzahl 0++
Meinen Respekt für diese super Anleitung!

Peter

8 Monaten zuvor
Punktzahl 0++

Ich wollte nur mal vielen herzlichen Dank für die Anleitung sagen :-)

Es funktionierte alles auf Anhieb, keine Probleme. Ich habe Guacamole auf einer Amazon AWS-Instanz installiert und verbinde mich darüber zum Homeserver.

axaneco

6 Monaten zuvor
Punktzahl 0++

Danke. Großartige Anleitung, hat für das Setup Schritt für Schritt genauso funktioniert wie beschrieben. (Nur das Verzeichnis /etc/guacamole/extensions/ muss man von Hand anlegen, wenn man 2FA mit DUO macht.)

Danke für deine Mühe, keep up the good work :-)

Marco

5 Monaten zuvor
Punktzahl 0++

Vielen Dank für die super Anleitung! :-)

Nach Upgrade auf Guacamole 1.1.0 funktionieren RDP-Verbindungen allerdings nicht mehr, trotz upgrade auf das benötigte FreeRDP2 ... jemand eine Idee?

BLinz

5 Monaten zuvor
Punktzahl 0++

Ahh, 1.1 ist also endlich raus. Ich aktualisiere mal bei Gelegenheit die Anleitung und schaue ob ich sehe woran es liegt.

In der Vergangenheit hatte ich schon mal ein Problem wenn ich versucht hatte ein Programm zum Start nach dem Login zu übergeben.

Es wird auch irgendwo in den Logs stehen was er hat.

maximilian

5 Monaten zuvor
Punktzahl 0++

mit "tail -f -n 200 /var/log/syslog | grep guacd" den log ansehen, wenn da steht: The current user's home directory ("/usr/sbin") is not writable, but FreeRDP generally requires a writable home directory

dann probier folgendes, hat bei mir geklappt:

neue gruppe anlegen: sudo groupadd guacd neuen user anlegen und in die gruppe setzen: "sudo useradd -r guacd -m -s /bin/nologin -g guacd -c guacd" (-r for system account, -m to create home dir, -s for nologin, -g to add to group, -c is just name/description and optional).

dann das file: "/etc/systemd/system/guacd.service" editiern

und darin den user auf den neu angelegten user ändern: User=guacd

knut

5 Monaten zuvor
Punktzahl 0++

Falls im syslog der segfault error 14 auftaucht, hat mir folgendes geholfen: Guacamole 1.1.0 RDP fix for Windows 10 machines on 1903+

On the affected workstation, open gpedit.msc or you can create an AD policy to do the same thing for many workstations.

In [Computer Configuration->Policies->Windows Settings->Administrative Templates->Windows Components->Remote Desktop Services->Remote Desktop Session Host->Remote Session Enviroment], set the Policy [Use WDDM graphics display driver for Remote Desktop Connections] to Disabled.

immae

5 Monaten zuvor
Punktzahl 0++
@marco scheint generell ein problem mit der neuen version zu sein. habe den stack von bitnami verwendet. dort genau das selbe problem. :(

neue guacamole version 1.1.0

5 Monaten zuvor
Punktzahl 0++
kannst du deine Anleitung anpassen auf die neuste version?

BLinz

5 Monaten zuvor
Punktzahl 0++

wenn ich mal Zeit dafür finde - jupp

Kann aber noch einen Moment dauern

Stefan

5 Monaten zuvor
Punktzahl 0++

Die Anleitung funktioniert fast komplett mit Version 1.1.0. Du musst lediglich die Versionsnummer in den o.g. Kommandos ersetzen und als Voraussetzung vor dem "make" libfreerdp2-2 zusätzlich installieren. Zu erwähnen ist noch, dass Punkt 11 nicht mehr erforderlich ist.

@BLinz: Vielen Dank für diese ausgezeichnete, sehr gut strukturierte Anleitung!

Alex

5 Monaten zuvor
Punktzahl 0++

Vielen Dank für die tolle Anleitung! Hat wunderbar geklappt, nur leider will bei mir das TOTP nicht fliegen. Hab für die MySQL eine dedizierte Maschine aufgebaut und dieses "Konstrukt" im verdacht.

Kennt das Problem jemand?

Mathias

5 Monaten zuvor
Punktzahl 0++

LDAP + TOTP funktioniert, man muss dazu allerdings zwei Dinge beachten. 1) wie im guacamole etwas unklar beschrieben, einen User bei Guacamole anlegen der auch im LDAP existiert (aber mit anderem passwort anlegen). Diesem Nutzer in Guacamole alle Rechte zuweisen. Dann als dieser Nutzer aber mit dem LDAP Passwort anmelden. Jetzt sollte man alle LDAP User in der Übersicht sehen

2) Alle Benutzer die TOPT benutzen sollen müssen das Recht "User kann sein eigenes Passwort ändern" aktiviert haben.

Daniel

4 Monaten zuvor
Punktzahl 0++

Hey Mathias, danke für den Tipp! Ich frage im AD die Mitgliedschaft einer Gruppe ab und brauche dann sogar nur das Recht "User kann sein eigenes Passwort ändern" setzen das es funktioniert. Bei AD Usern dieses Recht nicht haben übergeht er die 2FA leider komplett. Da wir die User die das nutzen sollen aber explezit in die Gruppe Setzen ist das gut kontrollierbar.

Vielen dank auch für dan ganzen Artikel!

Mathias

5 Monaten zuvor
Punktzahl 0++

Ich hatte auch den Segfault Fehler seitdem ich certbot benutzt habe.

Die Anletung von oben (WDDM deaktivieren) funktioniert zwar, aber ich würde gerne vermeiden das an jedem Rechner zu machen. Hat jemand eine andere Lösung gefunden?

Daniel

4 Monaten zuvor
Punktzahl 0++

ich versuch es gerade mal über die Registry, 1/1 hat schonmal geklappt und ich versuch das nun via GPO zu verteilen. Wärt wäre dann: [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]

"fEnableWddmDriver"=dword:00000000

Rufus

4 Monaten zuvor
Punktzahl 0++
Danke Dir - echt eine super Anleitung!

Andreas

4 Monaten zuvor
Punktzahl 0++

@ BLinz Danke für die tolle Anleitung!

@all Kommentatoren

Danke Euch für die hilfreichen Tips und workarounds. V.1.1.0 funktioniert prima!

StefanH

4 Monaten zuvor
Punktzahl 0++

Danke für die sehr strukturierte und sehr gut Anleitung, es war mit zwei weiteren Kommentaren hier (dezidierter User und libfreerdp2-2) auf Anhieb möglich mit Guacamole 1.10 per RDP auf einen Windows Guest zuzugreifen. Bei einem RDP Zugriff auf einen Ubuntu Guest tauchen im Syslog allerdings

segfaults "error 6 in libfreerdp2.so.2.0.0" auf - bin für jeden Ansatzpunkt zur Behebung dankbar.

StefanH

4 Monaten zuvor
Punktzahl 0++
mein Problem dürfte nichts mit Guacamole sondern mit der Kombination der Versionen von xrdp (Zielmaschine) und freerdp2 (Guacamole Maschine) zu tun haben - das funktioniert nur mit dem Schalter /relax-order-checks

John T

4 Monaten zuvor
Punktzahl 0++
Great Page. Can you provide instructions to Radius as well?

Ulli

3 Monaten zuvor
Punktzahl 0++

Also Guacamole 1.1.0. funktioniert so wunderbar. Mein Guacamole-Server ist ein Rasperry Pi 4. Das Bild ist sehr flüssig. Was nicht geht ist der Sound. Ich habe per RDP ein Ubuntu 18.04 LTS und ein Windows 10 angebunden.

Den Server habe ich selbst compiliert. Bein ./configure sind alle Devel Packete vorhanden.

Fehlermeldungen in den Logs gibt es keine. Hier beim Linux Desktop steht sogar was von Audio drin. Es passiert aber nichts.

Apr 20 15:18:31 ubuntu guacd[26016]: Loading keymap "base" Apr 20 15:18:31 ubuntu guacd[16470]: guacd[26016]: INFO:#011Loading keymap "base" Apr 20 15:18:31 ubuntu guacd[16470]: guacd[26016]: INFO:#011Loading keymap "de-de-qwertz" Apr 20 15:18:31 ubuntu guacd[26016]: Loading keymap "de-de-qwertz" Apr 20 15:18:32 ubuntu guacd[26016]: Accepted format: 16-bit PCM with 2 channels at 44100 Hz Apr 20 15:18:32 ubuntu guacd[16470]: guacd[26016]: INFO:#011Accepted format: 16-bit PCM with 2 channels at 44100 Hz Apr 20 15:18:32 ubuntu guacd[16470]: guacd[26016]: INFO:#011Accepted format: 16-bit PCM with 2 channels at 22050 Hz Apr 20 15:18:32 ubuntu guacd[26016]: Accepted format: 16-bit PCM with 2 channels at 22050 Hz Apr 20 15:18:32 ubuntu guacd[26016]: Connected to RDPDR 1.12 as client 0x73c808ad Apr 20 15:18:32 ubuntu guacd[16470]: guacd[26016]: INFO:#011Connected to RDPDR 1.12 as client 0x73c808ad Apr 20 15:18:32 ubuntu guacd[26016]: RDPDR user logged on Apr 20 15:18:32 ubuntu guacd[16470]: guacd[26016]: INFO:#011RDPDR user logged on


Bei Windows Desktop sieht es anders aus, hier steht nichts von Audio drin. Es kommt auch nichts aus den Lausprechern.

Apr 20 15:24:18 ubuntu guacd[26198]: Loading keymap "base" Apr 20 15:24:18 ubuntu guacd[26198]: Loading keymap "de-de-qwertz" Apr 20 15:24:18 ubuntu guacd[16470]: guacd[26198]: INFO:#011Loading keymap "base" Apr 20 15:24:18 ubuntu guacd[16470]: guacd[26198]: INFO:#011Loading keymap "de-de-qwertz" Apr 20 15:24:19 ubuntu guacd[26198]: Connected to RDPDR 1.13 as client 0x0002 Apr 20 15:24:19 ubuntu guacd[16470]: guacd[26198]: INFO:#011Connected to RDPDR 1.13 as client 0x0002 Apr 20 15:24:20 ubuntu guacd[26198]: RDPDR user logged on Apr 20 15:24:20 ubuntu guacd[16470]: guacd[26198]: INFO:#011RDPDR user logged on

Hat jemand eine Idee, wo ich beim Troubleshooting anfangen kann?

Gruß Ulli

Rene

3 Monaten zuvor
Punktzahl 0++

Hallo Zusammen,

irgendwie stehe ich auf den Schlauch. Habe die Schritte alle durchgeführt incl. libfreerdp2-2 Tomcat9 und User im guacd.service geändert..

Dennoch bekomme ich keinen RDP auf eine Win10 1909 Rechner zu Stande auf einen Server 2016 klappt es was mache ich falsch? Des Weiteren muss ich nach einem Neustart immer die SQL Zeit setzen da ich mich sonst nicht anmelden kann

Hätte mir jemand einen tip?

Ulli

3 Monaten zuvor
Punktzahl 0++

Den Registry Eintrag für den Wddm Driver hast du im Windows geändert? Das war bei mir der Grund, warum es zunächst nicht geklappt hat.

Außerdem müssen alle User, mit denen du dich connecten willst , als RDP Nutzer erlaubt sein.

Rene

3 Monaten zuvor
Punktzahl 0++

Wddm habe ich über die GPO gesetzt jedoch ohne erfolg. habe es hinbekommen war der haken bei Authentifizierung deaktivieren:

danke

murbschat@yahoo.com

3 Monaten zuvor
Punktzahl 0++

Hallo und vielen Dank für diese super Hilfe in Sachen "guacamole".

Ich habe Ubuntu 18.04.4 in einer VM laufen. Hier habe ich mich an Deine Anleitung gehalten. Es funktioniert soweit alles. Ich komme auf die Webseite und kann mich anmelden usw. Ich habe eine SSH Verbindung hinbekommen. Also auf mein Ubuntu konnte ich dann in die Konsole. Wenn ich nun aber VNC nutzen möchte um den Desktop von Ubuntu zu sehen, bekomme ich keine Verbindung. Es wird immer versucht diese aufzubauen klappt aber nicht. Ich vermute meine Einstellungen für die VNC Verbindung sind nicht richtg. Wenn ich über das Management Tool mit VNC auf die Vm gehe komme ich auf den Ubuntu-Desktop. Hat jemand einen Tipp für mich, wo ich suchen kann? Ich bin nicht der sicherste was Linux angeht - komme mehr von Windows, will aber Linux und VM usw. zu meinem Hobby machen.

Vielen Dank schonmal!

VG Mario

Thomas V

3 Monaten zuvor
Punktzahl 0++

Hallo! Danke für die super Anleitung, habe es mit allen Zusatztipps in den Kommentaren auch zum Laufen bekommen. Habe als SSL-Proxy mein Synology NAS vorgeschaltet, was auch funktioniert hat.

Leider bleibt ein Wermutstropfen: Die Latenz, inbesondere bei Tastatureingaben ist sehr hoch. (gefühlt 0,5-1s). Kann es sein, dass irgendwo ein Buffering stattfindet, was man deaktivieren kann?

Vielen Dank VG

Thomas V

Thomas V

3 Monaten zuvor
Punktzahl 0++
Ich hab es jetzt hinbekommen. Habe im Reverse SSL Proxy auf meiner Synology jetzt die Header für Websockets gesetzt. Damit ist es deutlich performanter.

Rene

3 Monaten zuvor
Punktzahl 0++

Hallo zusammen, ich habe noch ein kleines Problen, immer nach einem Neustart bleibt der Loginscreen leer bis ich

mysql SET GLOBAL time_zone = '+1:00'; quit systemctl restart tomcat9.service

ausführe gibt es einen Trick das dieses nicht jedesmal gesetzt werden muss? kenne mich mit Linux nicht so aus.

Danke im voraus

Ulli

einem Monat zuvor
Punktzahl 0++
Hallo zusammen, hat jemand die Version 1.2.0 schon istalliert? Habe ein Update gemacht und es klappt soweit. Außer zu OS X, da gibt es einen Haufen neuer VNC Optionen. Da will nichts mehr.

Ulli

einem Monat zuvor
Punktzahl 0++

Jul 2 18:25:06 desktop guacd[785]: Creating new client for protocol "vnc" Jul 2 18:25:06 desktop guacd[785]: guacd[785]: INFO:#011Creating new client for protocol "vnc" Jul 2 18:25:06 desktop guacd[785]: Connection ID is "$a8d42626-f68f-4e5d-814c-fd6c1edad090" Jul 2 18:25:06 desktop guacd[785]: guacd[785]: INFO:#011Connection ID is "$a8d42626-f68f-4e5d-814c-fd6c1edad090" Jul 2 18:25:06 desktop guacd[1362]: Cursor rendering: local Jul 2 18:25:06 desktop guacd[1362]: guacd[1362]: INFO:#011Cursor rendering: local Jul 2 18:25:06 desktop guacd[1362]: User "@127bfcdc-a719-43e9-99ba-572a2593f2f9" joined connection "$a8d42626-f68f-4e5d-814c-fd6c1edad090" (1 users now present) Jul 2 18:25:06 desktop guacd[1362]: guacd[1362]: INFO:#011User "@127bfcdc-a719-43e9-99ba-572a2593f2f9" joined connection "$a8d42626-f68f-4e5d-814c-fd6c1edad090" (1 users now present) Jul 2 18:25:06 desktop guacd[1362]: Using non-standard VNC clipboard encoding: 'UTF-8'. Jul 2 18:25:06 desktop guacd[1362]: guacd[1362]: INFO:#011Using non-standard VNC clipboard encoding: 'UTF-8'. Jul 2 18:25:06 desktop guacd[1362]: VNC server supports protocol version 3.889 (viewer 3.8) Jul 2 18:25:06 desktop guacd[1362]: We have 6 security types to read Jul 2 18:25:06 desktop guacd[1362]: 0) Received security type 30 Jul 2 18:25:06 desktop guacd[1362]: Selecting security type 30 (0/6 in the list) Jul 2 18:25:06 desktop guacd[1362]: 1) Received security type 33 Jul 2 18:25:06 desktop guacd[1362]: 2) Received security type 36 Jul 2 18:25:06 desktop guacd[1362]: 3) Received security type 31 Jul 2 18:25:06 desktop guacd[1362]: 4) Received security type 32 Jul 2 18:25:06 desktop guacd[1362]: 5) Received security type 35 Jul 2 18:25:06 desktop guacd[1362]: Selected Security Scheme 30 Jul 2 18:25:06 desktop guacd[1362]: VNC connection failed: Authentication or authorization failure Jul 2 18:25:06 desktop guacd[1362]: Unable to connect to VNC server. Jul 2 18:25:06 desktop guacd[1362]: guacd[1362]: ERROR:#011Unable to connect to VNC server. Jul 2 18:25:06 desktop guacd[1362]: User "@127bfcdc-a719-43e9-99ba-572a2593f2f9" disconnected (0 users remain) Jul 2 18:25:06 desktop guacd[1362]: guacd[1362]: INFO:#011User "@127bfcdc-a719-43e9-99ba-572a2593f2f9" disconnected (0 users remain) Jul 2 18:25:06 desktop guacd[1362]: guacd[1362]: INFO:#011Last user of connection "$a8d42626-f68f-4e5d-814c-fd6c1edad090" disconnected Jul 2 18:25:06 desktop guacd[1362]: Last user of connection "$a8d42626-f68f-4e5d-814c-fd6c1edad090" disconnected Jul 2 18:25:11 desktop guacd[785]: Connection "$a8d42626-f68f-4e5d-814c-fd6c1edad090" removed.

Jul 2 18:25:11 desktop guacd[785]: guacd[785]: INFO:#011Connection "$a8d42626-f68f-4e5d-814c-fd6c1edad090" removed.

Torsten S

einem Monat zuvor
Punktzahl 0++

Hallo ,und danke für diese grandiose Anleitung!

Ich habe eigentlich von der ganzen Materie wenig Plan; daher war ich umso erstaunter, dass ich es hinbekommen habe, unter Ubuntu 20.04 den Guacamole 1.2.0 ans laufen zu bekommen. Hat zwar insgesamt jetzt 8 Stunden ngebraucht; aber es klappt! Alles läuft in einem QNAP-NAS als VM (Ubuntu mit Guacamole und auch die 2 VMs, auf die ich Zugriff haben wollte.

Wo ich dran gescheitert bin: 1: Bei Windows 10 bin ich erst gescheitert, weil die RDP-Sicherheitseinstellungen die Verbindung nicht zugelassen haben . freerdp hat von dem GUI die Verbindung aufgebaut, Guacamole mit der XML-Konfiguration nicht, trotz dass ich alle möglichen Konfigurationen durchgetestet habe. Als ich auf MySQL umgestellt und die Verbindung dort konfiguriert habe, hat alles funktioniert

2. Die falsche Zeit im SQL führt zu einer Fehlerseite "Es ist ein Fehler aufgetreten, wenden sie sich an den Administrator...

Tevfik

einem Monat zuvor
Punktzahl 0++
Thanks for the instructions. Kudos!

Cyanrider@gmail.com

einem Monat zuvor
Punktzahl 0++

Bekomme nur folgende Meldung direkt am Anfang:

Paket libssl1.0.0 ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst wurde oder nur aus einer anderen Quelle verfügbar ist.

Paket tomcat8 ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst wurde oder nur aus einer anderen Quelle verfügbar ist.

Paket freerdp-x11 ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst wurde oder nur aus einer anderen Quelle verfügbar ist. Doch die folgenden Pakete ersetzen es: freerdp2-x11:i386 freerdp2-x11

E: Für Paket »freerdp-x11« existiert kein Installationskandidat. E: Paket libfreerdp-dev kann nicht gefunden werden. E: Für Paket »libssl1.0.0« existiert kein Installationskandidat. E: Für Paket »tomcat8« existiert kein Installationskandidat. E: Paket tomcat8-admin kann nicht gefunden werden. E: Paket tomcat8-docs kann nicht gefunden werden.


Kannst du mir helfen?

Rene

einem Monat zuvor
Punktzahl 0++

Hallo ich bins mal wieder, hat jemand zufällig eine Anleitung für ein Update von 1.1 auf 1.2?

Gruß Rene
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung