Cookies helfen bei der Bereitstellung von znilwiki. Durch die Nutzung von znilwiki erklärst du dich damit einverstanden, dass Cookies gespeichert werden. Weitere Informationen
 Aktionen

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

Aus znilwiki

Changelog:

  • 07.09.2016: Erste Version des Artikel mit Gucamole Version 0.9.9
  • 02.11.2017: Überarbeitung auf Guacamole Version 0.9.13
  • 12.11.2017: Anpassung MySQL-Connector auf Version 5.1.43

Nach diversen Versuchen über einen Webrowser per RDP auf eine Windows 7 VM zu zugreifen, unter anderem mit VMware View etc. 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.



1 Ausgangslage

Ich habe hier einen ESXi Server auf dem eine VM mit dem Namen WEBSERVER mit Apache2 als Webserver läuft (IP: 192.168.45.10).
Nach der Installation kann man von extern über eine Subdomain remote.znil.net auf die Guacamole-Webseite per https:// zugreifen.
Guacamole ist auch in den Paketquellen von Ubuntu 16.04. enthalten - jedoch in der alten Version 0.8.3, nicht in der aktuellen 0.9.9 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 Voraussetzungen installieren

apt install make libssh2-1-dev libtelnet-dev libpango1.0-dev libossp-uuid-dev libcairo2-dev libpng12-dev freerdp-x11 libssh2-1 libvncserver-dev libfreerdp-dev libvorbis-dev libssl1.0.0 gcc libssh-dev libpulse-dev tomcat7 tomcat7-admin tomcat7-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



3 Guacamole herunterladen und kompilieren



3.1 Release Version

Bei der Überarbeitung im November 2017 dieses Artikels war die Version

Guacamole 0.9.13

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/incubator/guacamole/0.9.13-incubating/source/guacamole-server-0.9.13-incubating.tar.gz
wget http://mirror.ibcp.fr/pub/apache/incubator/guacamole/0.9.13-incubating/binary/guacamole-0.9.13-incubating.war

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

tar xvzf guacamole-server-0.9.13-incubating.tar.gz





4 Kompilieren

cd /usr/src/guacamole-server-0.9.13-incubating
./configure --with-init-dir=/etc/init.d

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

------------------------------------------------
guacamole-server version 0.9.13-incubating
------------------------------------------------

   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

   Protocol support:

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

   Services / tools:

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

   Init scripts: /etc/init.d

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




5 Test Server

Er hat uns nun ein Start-Script hinterlegt.

/etc/init.d/guacd start

Der Start schlägt aber fehl mit einem

Starting guacd: /usr/local/sbin/guacd: error while loading shared libraries: libguac.so.12: cannot open shared object file: No such file or directory
FAIL

Deshalb geben wir einfach ein

ldconfig
/etc/init.d/guacd start

ein und nun geht es:

Starting guacd: guacd[1608]: INFO:      Guacamole proxy daemon (guacd) version 0.9.13-incubating started
SUCCESS


Wir beenden den Server aber gleich wieder:

/etc/init.d/guacd stop

da wir erst einmal die Konfigurationsdateien anlegen müssen.



6 Guacamole Server konfigurieren

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

mkdir /etc/guacamole

und erstellen die Server-Konfigurationsdatei:


6.1 guacamole.properties

mkdir /etc/guacamole

und die Datei:

nano /etc/guacamole/guacamole.properties

Inhalt:

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




6.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.incubator.apache.org/doc/gug/configuring-guacamole.html#rdp -->
        <connection name="Windows 7 Test VM">
                <protocol>rdp</protocol>
                <param name="hostname">192.168.42.40</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="console">true</param>                <!-- sorgt z.B. bei Terminalserver dafür die Consolen-Sitzung zu bekommen, ansonsten sinnlos -->
                <param name="server-layout">de-de-qwertz</param>  <!-- mit deutscher Tastatur verbinden -->
                <param name="ignore-cert">true</param>            <!-- alle Zertifikate akzeptieren -->
        </connection>

        <!-- Verbindung 2 für Benuter admin -->
        <!-- SSH - Verbindung -->
        <!-- Parameter siehe https://guacamole.incubator.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>



7 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"



8 Automatischen Start des Servers einrichten

Das geht netter Weise immer noch per

update-rc.d guacd defaults

Das für systemctl notwendige Startskript baut er uns dann automatisch



9 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 beiden 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/




10 Guacamole Client installieren

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

/usr/src/guacamole-0.9.13-incubating.war

bereit liegen.
Kopieren wir diese an Ihren Bestimmungsort:

cp /usr/src/guacamole-0.9.13-incubating.war /var/lib/tomcat7/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/tomcat7/.guacamole


Nun müssen wir den Tomcat neu starten:

systemctl restart tomcat7.service




11 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-160907-140614.PNG

Und melden uns mit dem gerade angelegten Benutzer an:
ClipCapIt-160907-140655.PNG
Ein Klick auf die Verbindungen unten startet jeweils die ausgewählte Verbindung:
ClipCapIt-160907-140837.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.



12 Logdateien auswerten

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




13 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.



14 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

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/login.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 192.168.45.10:80>
        ServerName remote.znil.net
        ServerAdmin webmaster@znil.net

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


<VirtualHost 192.168.45.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://192.168.45.10:8080/guacamole/ flushpackets=on
        ProxyPassReverse / http://192.168.45.55:8080/guacamole/
        ProxyPassReverseCookiePath /guacamole /
        <Location /websocket-tunnel>
                Order allow,deny
                Allow from all
                ProxyPass ws://192.168.45.10:8080/guacamole/websocket-tunnel
                ProxyPassReverse ws://192.168.45.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




15 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



16 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

service guacd restart && service tomcat7 restart

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!



16.1 MySQL installieren

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

apt-get install mysql-server mysql-client



16.2 MySQL Extension herunterladen und entpacken

Also, wir haben hier die Version

0.9.13

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

https://guacamole.incubator.apache.org/releases/0.9.13-incubating/
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/incubator/guacamole/0.9.13-incubating/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz
tar xvzf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
cd guacamole-auth-jdbc-0.9.13-incubating/mysql/




16.3 Lib-Dateien kopieren

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

/usr/src/guacamole-auth-jdbc-0.9.9/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-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /etc/guacamole/extensions/




16.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 ist das Ding einfach mit im heruntergeladenen Paket - ist es aber nicht!

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



16.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.



16.6 Schema in MySQL importieren

Die liegen unter

/usr/src/guacamole-auth-jdbc-0.9.13-incubating/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-0.9.13-incubating/mysql/schema/001-create-schema.sql
mysql -uguacamole -pguacamole guacamole < /usr/src/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/002-create-admin-user.sql




16.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:

service tomcat7 restart




16.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-171102-222442.PNG

Geht dann auf den Reiter Einstellungen und wählt das Register Benutzer und dort den guacadmin aus:

ClipCapIt-171102-222607.PNG

Dort verpasst Ihr diesem erst einmal ein neues Passwort:
Ich empfehle einen neuen Administrations-Benutzer anzulegen und den guacadmin zu löschen oder zu deaktivieren.


17 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.


17.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.


17.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.



18 Kommentare


Chris

16 Monaten zuvor
Punktzahl 0++

Hi,

erstmal danke für die Anleitung.

Ich habe alles so gemacht wie du beschrieben hast auf einem frischen Ubuntu und es funktioniert bis dahin wo ich auf Mysql umstelle. Mit Basic-User-Auth funktioniert alles aber nach der MySQL umstellung bekomme ich beim Anmelden den Fehler "Anmeldungsfehler" mit dem User guacadmin:guacadmin

Das hatte ich gestern auch als ich meine bestehende guacamole Installation geupdatet habe. Da dachte ich mach einfach mal alles neu aber wieder genau der gleiche Fehler.

Hast du eine Idee?

16 Monaten zuvor
Punktzahl 0++

Als Fehler in Catalina.out bekomme ich:

21:31:58.165 [http-bio-8080-exec-1] WARN o.a.g.r.auth.AuthenticationService - Authentication attempt from 10.0.1.124 for user "guacadmin" failed.

16 Monaten zuvor
Punktzahl 0++
Irgendwie scheint die MySQL abfrage überhaupt nicht stattzufinden. Ich kann in der guacamole.properties z.b. einen falschen Datenbanknamen oder Benutzer eingeben und es kommt immer die gleiche Fehlermeldung wie oben.

BLinz

16 Monaten zuvor
Punktzahl 0++

Moin, also wenn man es genau(!) nach meiner Anleitung macht sollte es funktionieren. Ich nutze selbst meine eigene Anleitung und habe so neulich auch den Wechsel auf die aktuelle Version vollzogen. Aber ich hatte leider genau das gleiche Problem wie du und daran fast 2 Stunden herumgesucht. Mein Fehler war das ich bei der Umstellung auf den SQL-Provider nicht den BasicAuth-Provider deaktiviert hatte. Schaue dir noch mal genau den Abschnitt

  1. guacamole.properties_an_MySQL_anpassen
an! Da muss ein Kommentar-Zeichen vor den bisherigen Eintrag und dann die neuen Einträge hinzufügen.

Chris

16 Monaten zuvor
Punktzahl 0++

Sollte doch richtig sein. Das kann doch nicht sein, das das nicht funktioniert. Wahrscheinlich ist es was ganz banales.

  1. genaue Beschreibung der Paramter siehe unter
  2. //guac-dev.org/doc/gug/configuring-guacamole.html#initial-setup
  3. --------------------------------------------------------------------
  1. Hostname und Port des Servers auf dem der Guacamole-Server läuft

guacd-hostname: localhost guacd-port: 4822

  1. Pfad zu .jar Dateien die vom Client nachgeladen werden können

lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes


  1. Welche Methode wird für die Anmeldung verwendet?
  2. Hier nehmen wir BasicFileAuthenticationProvider der ohne zusätzliche Module auskommt
  3. auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
  1. Neuer Eintrag für MySQL - siehe //guac-dev.org/doc/gug/mysql-auth.html

auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider

  1. Lister der Sprachen der Weboberfläche einschränken

available-languages: en, de

  1. BasicFileAuthenticationProvider benötigt eine .xml Datei mit den Benutzername, Passwörter und Verbindungen:
  2. basic-user-mapping: /etc/guacamole/user-mapping.xml


  1. Verbindungsdaten zur MySQL-Datenbank:

mysql-hostname: localhost mysql-port: 3306 mysql-database: guacamole

mysql-username: guacamole

BLinz

16 Monaten zuvor
Punktzahl 0++

Das "basic-user-mapping" muss auch auskommentiert sein.

sonst kopier dir doch mal den Text von oben in deine Datei

16 Monaten zuvor
Punktzahl 0++
Das ist bei mir auskommentiert. Bie Copy&Paste hier in das Kommentarfeld ist die # weg.

plopp

13 Monaten zuvor
Punktzahl 0++

Hallo, auch von mir erstmal einen herzlichen Dank für die super Anleitung. Folgendes hat bei mir funktioniert... einfach die beiden .jar Dateien vom Verzeichnis /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes in /usr/share/tomcat7/.guacamole kopieren und in guacamole.properties die folgende Zeile anpassen:

  1. lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes
lib-directory: /usr/share/tomcat7/.guacamole

plopp

13 Monaten zuvor
Punktzahl 0++
woopsie... die Zeile lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes sollte auskommentiert und nicht gelistet werden :)... also diese Zeile durch lib-directory: /usr/share/tomcat7/.guacamole ersetzen...

be1001

10 Monaten zuvor
Punktzahl 0++

Hallo,

habe Deine Anleitung nachgebaut bisher ohne Mysql. Komischer Weise erreiche ich einen Windows10 und den anderen Windows10 Rechner nicht. Meine Fehlermeldung:

Jun 30 01:11:10 raspberrypi guacd[11612]: Connection did not succeed Jun 30 01:11:18 raspberrypi guacd[11614]: Protocol "ssh" selected Jun 30 01:11:18 raspberrypi guacd[11614]: Connection ID is "$14672671-7024-4ff8-9407-c212d3b32814" Jun 30 01:11:18 raspberrypi guacd[11614]: Starting client Jun 30 01:11:19 raspberrypi guacd[11614]: SSH connection successful. Jun 30 01:11:50 raspberrypi guacd[11614]: Client disconnected Jun 30 01:11:51 raspberrypi guacd[11614]: SSH connection ended. Jun 30 01:11:54 raspberrypi guacd[11620]: Protocol "rdp" selected Jun 30 01:11:54 raspberrypi guacd[11620]: Connection ID is "$ff91e44c-3cb8-410b-bc73-14d1d2bad08a" Jun 30 01:11:54 raspberrypi guacd[11620]: No security mode specified. Defaulting to RDP. Jun 30 01:11:54 raspberrypi guacd[11620]: Loading keymap "base" Jun 30 01:11:54 raspberrypi guacd[11620]: Loading keymap "en-us-qwerty" Jun 30 01:11:54 raspberrypi guacd[11620]: Failed to load guacdr plugin. Drive redirection and printing will not work. Sound MAY not work. Jun 30 01:11:54 raspberrypi guacd[11620]: Failed to load guacsnd alongside guacdr plugin. Sound will not work. Drive redirection and printing MAY not work. Jun 30 01:11:54 raspberrypi guacd[11620]: Error connecting to RDP server Jun 30 01:11:54 raspberrypi guacd[11620]: Connection did not succeed Jun 30 01:13:38 raspberrypi guacd[11623]: Protocol "rdp" selected Jun 30 01:13:38 raspberrypi guacd[11623]: Connection ID is "$7679cc3e-b215-4398-b9d6-79dfb71fd21a" Jun 30 01:13:38 raspberrypi guacd[11623]: No security mode specified. Defaulting to RDP. Jun 30 01:13:38 raspberrypi guacd[11623]: Loading keymap "base" Jun 30 01:13:38 raspberrypi guacd[11623]: Loading keymap "en-us-qwerty" Jun 30 01:13:38 raspberrypi guacd[11623]: Failed to load guacdr plugin. Drive redirection and printing will not work. Sound MAY not work. Jun 30 01:13:38 raspberrypi guacd[11623]: Failed to load guacsnd alongside guacdr plugin. Sound will not work. Drive redirection and printing MAY not work. Jun 30 01:13:38 raspberrypi guacd[11623]: Error connecting to RDP server Jun 30 01:13:38 raspberrypi guacd[11623]: Connection did not succeed


Christian

BLinz

10 Monaten zuvor
Punktzahl 0++

Das Problem ist das das Paket für RDP-Verbindungen (libfreerdp-dev ) unter ARM / Auf dem Raspberry Pi nicht funktioniert. Ein Kollege und ich haben uns unabhängig voneinander schon mal die Zähne dran ausgebissen.

Funktioniert nur auf richtigen x86 Rechnern

rene.hampoelz@outlook.at

6 Monaten zuvor
Punktzahl 0++

Hallo, Tolle anleitung :) hat mit sehr viel zeit erspart!

Allerdings kann ich mich komischerweise nicht mit meinem SSH server verbinden ... VNC funktioniert problemlos!

Im Syslog bekomme ich, wenn ich mich mit SSH verbinde folgende meldungen: Creating new client for protocol "ssh" Connection ID is "$8a5c6fe0-2641-4710-b9d4-93b463e55d35" Unable to load client plugin Connection "$8a5c6fe0-2641-4710-b9d4-93b463e55d35" removed.

Beim Guacamole Server bei den Checks stand aber alles auf yes

Ich habe auch schon probiert den ganzen Guacamole Server zu löschen und noch mal zu installieren - hat aber leider nichts geholfen

rene.hampoelz@outlook.at

6 Monaten zuvor
Punktzahl 0++
Konnte es lösen indem ich 'libguac-client-*' installierte und den Guacamole Server nochmals Kompilierte.

BLinz

6 Monaten zuvor
Punktzahl 0++
Tja .. ich habe es jetzt extra auch noch einmal getestet ... und ging auf Anhieb. Also keine Fehler in der Anleitung!?!?

Quaco

6 Monaten zuvor
Punktzahl 0++

Hallo Leute, ich habe ein doofe Frage an euch die ihr mir sicherlich beantworten könnt: Funktioniert Guacamole auch mit Reverse Proxy für Clients welche im Internet sind - oder funktioniert das nur, wenn der Client im selben Netzwerk oder per VPN erreichbar ist?

Danke

BLinz

6 Monaten zuvor
Punktzahl 0++
Falls du dich darauf beziehst wohin man z.B. RDP Verbindungen aufbauen kann: Überall dort hin wohin auch die Guacamole-Installation kommt. Also auf Systeme die im gleichen Netzwerk wie der Guacamole-Server sind - aber auch jedes andere System im Internet solange es die IP und den Port erreichen kann.

tim.sahr@network-group.de

5 Monaten zuvor
Punktzahl 0++

Hallo, erstmal vielen dank für Anleitung, echt super beschrieben.

Könntest du mir vielleicht bei der SSL/VHOST Installation behilflich sein und dich per Mail melden?

Vielen Dank

Grüße

Tim

gerrit.asch@gmail.com

4 Monaten zuvor
Punktzahl 0++

Hallo,

vielen Dank für die ausführliche Anleitung. Leider habe ich das Problem, dass ich mich mit der Basic Authentifzierung schon nicht anmelden kann. Es kommt im /tomcat/catalina.log die Meldung the basic-user-mapping ist deprecated. Please use GUACAMOLE_HOME/user-mapping und die Meldung Invalid Byte 1 of 1-Byte UTF-8 file.

Hast du eine Idee wo mein Fehler liegt? Ein Kollege hat es genauso probiert und bekommt den selben Fehler. Beidesmal wurde eine Frische Ubuntu 16.04 Server Installation nur mit OpenSSH Server genutzt. Der Server wurde auf Englisch installiert und betrieben falls es hier zu dem Problemen kommen könnte...

BLinz

4 Monaten zuvor
Punktzahl 0++

Das klingt als wäre Punkt 7, Gucamole Home setzen nicht gelaufen bzw. macht mal einen Neustart und überprüft ob danach die Variable noch gesetzt ist. Die UTF-8 Meldung bedeutet entweder das die Datei ein falsches Format hat. Oder das diese nicht gefunden wurde (was ich vermute). Also Neustart und danach die Ausgabe von

echo $GUACAMOLE_HOME

prüfen

matega@gmx.de

3 Monaten zuvor
Punktzahl 0++

version 0.9.13-incubating

Hallo!

Danke für die tolle Anleitung!

Bei mir gibt es jedoch noch ein Problem mit dem Download. Der Ordner Download hat auf dem Windows-RDP-Rechner nur read-only Berechtigung Evtl. hat jamnd eine Idee zur Lösung.

Zuerst klappte das Anlegen des "shared drives" gar nicht bis ich folgenden Link auf den Guacamole-Server angelegt hatte:

ln -sv /usr/local/lib/freerdp/guacdr-client.so /usr/lib/x86_64-linux-gnu/freerdp

Damit war der Upload möglich, aber der Download eben nicht.

Die user-mapping.xml sieht so aus.. <param name="enable-drive">true</param> <param name="drive-path">/srv/guacamole/config/datentausch</param>

  1. /srv/guacamole/config# ls -lah

total 28K drwxr-xr-x 3 root root 4,0K Jan 29 08:44 . drwxrwxr-x 8 1001 1001 4,0K Sep 25 05:44 .. drwxrwxrwx 3 root root 4,0K Jan 26 15:42 datentausch -rw-r--r-- 1 root root 829 Jan 29 08:28 guacamole.properties -rw-r--r-- 1 root root 9,4K Jan 15 10:16 user-mapping.xml

Also volle Schreibberechtigung auf datentausch. Der Guacamole-Dient wird als Root gestartet

In der guacamole.properties sind diese Einträge:

guacd-hostname: localhost guacd-port: 4822

Wenn ich Dateien in den Download-Ordner schiebn möchte, bekomme ich ein "refused"

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

Jan 29 08:29:14 ip-10-44-0-21 guacd[1737]: Device 0 (Guacamole Filesystem) connected successfully Jan 29 08:29:28 ip-10-44-0-21 guacd[1747]: Guacamole proxy daemon (guacd) version 0.9.13-incubating started Jan 29 08:29:28 ip-10-44-0-21 guacd[1747]: Unable to bind socket to host ::1, port 4822: Address family not supported by protocol Jan 29 08:29:28 ip-10-44-0-21 guacd[1747]: Unable to bind socket to host 127.0.0.1, port 4822: Address already in use Jan 29 08:29:28 ip-10-44-0-21 guacd[1747]: Unable to bind socket to any addresses. Jan 29 08:29:55 ip-10-44-0-21 guacd[1737]: File open refused (-2): "\desktop.ini" Jan 29 08:29:57 ip-10-44-0-21 guacd[1737]: File open refused (-2): "\Download\desktop.ini"


  1. netstat -tulpen | grep 4822

tcp 0 0 127.0.0.1:4822 0.0.0.0:* LISTEN 0 18429 1733/guacd

Auf dem Port läuft nur der guacd. Stoppe ich ihn, läuft auch Dienst mehr darauf.

Ich weiß kein Ansatz mehr, um Daten in den Download-Ordner unter Windows zu verschieben.

BLinz

3 Monaten zuvor
Punktzahl 0++
Irgendwie scheint da was doppelt zu laufen, also guacd versucht zweimal zu laufen. Schon mal den Server neu gestartet?

matega@gmx.de

3 Monaten zuvor
Punktzahl 0++

Neustart war ohne Erfolg. Deine Theorie könnte das bestätigen root@host ->> ps aux|grep guacd root 6638 0.0 0.1 230040 9872 ? Sl 12:46 0:00 /usr/local/sbin/guacd -p /var/run/guacd.pid root 6644 0.1 0.5 611100 47264 ? Sl 12:46 0:00 /usr/local/sbin/guacd -p /var/run/guacd.pid root 6663 0.0 0.0 14468 940 pts/0 S+ 12:52 0:00 grep --color=auto guacd

Muss der guacd-Dienst über init.d oder systemd gestartet werden?

root@ihost ->> /etc/init.d/guacd status guacd is running with PID=6638.

root@ihost:->> systemctl status guacd ● guacd.service - LSB: Guacamole proxy daemon Loaded: loaded (/etc/init.d/guacd; bad; vendor preset: enabled) Active: active (running) since Mo 2018-01-29 12:46:31 UTC; 1min 38s ago Docs: man:systemd-sysv-generator(8) Process: 6633 ExecStart=/etc/init.d/guacd start (code=exited, status=0/SUCCESS) Tasks: 11 Memory: 37.3M CPU: 521ms CGroup: /system.slice/guacd.service ├─6638 /usr/local/sbin/guacd -p /var/run/guacd.pid └─6644 /usr/local/sbin/guacd -p /var/run/guacd.pid ... Jan 29 12:46:50 ip-10-44-0-21 guacd[6644]: Device 0 (Guacamole Filesystem) connected successfully Jan 29 12:47:04 ip-10-44-0-21 guacd[6644]: File open refused (-2): "\desktop.ini"

Jan 29 12:47:08 ip-10-44-0-21 guacd[6644]: File open refused (-2): "\Download\desktop.ini"

BLinz

3 Monaten zuvor
Punktzahl 0++

systemd - wobei dieser auch auch ein init.d Script einbinden würde. Es sollte aber aber entweder ein systemd-script sein oder ein init.d

Wenn du kannst: Setz doch noch einmal ein neues Testsystem auf (Ich hab alles in VMs, da ist das kein Problem) und mach es noch mal von vorne. Nach meiner eigenen Anleitung konnte ich das bisher immer fehlerfrei aufsetzen. Und dann hast du ein lauffähiges System zum vergleich

matega@gmx.de

3 Monaten zuvor
Punktzahl 0++
Danke für Deine schnellen Antworten. Ich setze es nochmal auf einem frischen System auf....

BLinz

3 Monaten zuvor
Punktzahl 0++

Ich sehe eh gerade das nun 0.9.14 raus ist ... und ich die Anleitung (wieder einmal) überarbeiten kann. Und da das Datenbankschema (wieder einmal) geändert wurde am besten mit neuer Datenbank, sprich alles neu. Mit Updates hatte ich immer Ärger bei guacamole, das geht mir doch ein wenig auf die Nerven. Allerdings habe ich keine andere Kostenlose Software gefunden die das so schön kann - für privat.

Leider hakt es bei vielen Kundenfirewalls, scheinbar bei denen die den SSL Tunnel aufbrechen. Da kommt es immer wieder zu abbrüchen.

matega

einem Monat zuvor
Punktzahl 0++

Ich hatte heute den Fall, dass keine Verbindung zu Windows 10 / Windows Server 2016 über Guacamole möglich war. Jedoch direkt per RDP von einem anderen Rechner. Fehlermeldung: "The remote desktop server is currently unreachable. If the problem persists, please notify your system administrator, or check your system logs." Die Lösung ist die Deaktivierung des "Remote Desktop Network Level Authentication". Dazu ändert man folgenden Wert von 2 auf 1 in der Registry. regedit [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]

“SecurityLayer”=dword:00000001

jens

einem Monat zuvor
Punktzahl 0++

Hallo matega,

vielen Dank für Deinen Kommentar. Der hat mir zahlreiche weitere Tage des Suchens erspart. Nachdem ich über guacamole 3 Rechner eingebunden habe und es nur auf einem funktioniert hat (obgleich die anderen beiden Rechner augenscheinlich gleich konfiguriert waren) war ich echt am Verzweifeln. Ich habe bestimmt 3 Tage nach einem Fehler gesucht und keinen gefunden (allerdings habe ich von Netzwerkprotokollen auch keine Ahnung), habe Ports freigegeben und wieder geschlossen, habe die Firewall an und aus geschaltet - alles ohne Erfolg. Durch Zufall bin ich nun auf diese echt tolle Seite gelangt -> danke an BLinz für diese echt tolle Anleitung!

Das seltsame war, dass ich die beiden nicht mit guacamole funktionierenden Rechner problemlos per RDP von jedem anderen Rechner aus (und auch vom Raspberry) erreichen konnte, sobald jedoch guacamole ins Spiel kam war es aus. Nachdem ich nun wie von Dir beschrieben vorgegangen bin und die Rechner neu gestartet habe funzt alles einwandfrei (wer auch immer den Eintrag auf 2 geändert hatte.

Lieben Dank!
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.