Aktionen

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

Aus znilwiki

Warning.png
Warnung: Dieser Artikel wird nicht mehr gepflegt. Zur scheint noch alles wie hier beschrieben zu funktionieren. Es gibt nun jedoch einen neuen Artikel für Ubuntu 16.04. und der neueren Guacamole-Version



Changelog:

  • 12.11.2014: Erste Version des Artikel mit Gucamole Version 0.9.3
  • 20.02.2015: Update des Artikels auf Version 0.9.5
  • 05.05.2015: Update des Artikels auf Version 0.9.6
  • 08.05.2015: Nachbesserung: benötigte Pakete für Druckfunktion mit aufgenommen
  • 26.07.2015: Upgrade von Version 0.9.6 auf 0.9.7 eingebaut (letzter Abschnitt)

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.
Die erste Installation war "ganz ok", ich hatte aber mit Verbindungsabbrüchen zu kämpfen. Deshalb habe ich beschlossen das ganze mal mit der neuesten Version/ dem aktuellen Quellcode noch einmal zu installieren. Und dies ist die Anleitung damit es beim nächsten mal schneller geht.
Das ganze habe ich mir wie immer aus diversen Webseiten und der offiziellen Anleitung zusammen gesucht und dann eine Schritt-für-Schritt Anleitung auf Basis von Ubuntu daraus gebaut.

Important.png
Hinweis: Ich installiere das hier auf einem extra Server - es geht aber auch ohne Probleme mit auf einem bestehenden. Ihr müsst dann halt statt auf die IP auf den localhost' verweisen, der Rest bleibt 1:1 identisch




1 Ausgangslage

Ich habe hier einen ESXi Server auf dem ein WEBSERVER mit Apache2 als Webserver läuft (IP: 192.168.42.10).
Guacamole wird in einer zusätzlichen VM LOGIN installiert (IP 192.168.42.55).
Nach der Installation kann man von extern über eine Subdomain login.znil.net auf die Guacamole-Webseite per https:// zugreifen.

Das ganze könnte / müsste auch direkt auf dem WEBSERVER mit laufen ... aber das teste ich ein anderes mal ... mir war es zunächst unheimlich neben dem Apache dann auch noch den Tomcat laufen zu lassen.



2 Installation VM

Wir installieren zunächst ein ganz normales Ubuntu 14.04.x LTS Server durch.
Für die VM habe ich folgende Hardware eingestellt:

  • 1vCPU
  • 1GB RAM (256MB tun es auch, aber so geht das Setup schneller)
  • 20GB Disk (5GB reichen auch)


Als Optionen bei der Installation habe ich nur

[*] OpenSSH server

aktiviert um mit puTTY / kiTTY arbeiten zu können.

Ich habe mir (wie immer) den root frei geschaltet und arbeite unter diesem Account - ihr müsst halt ggf. immer ein sudo davor packen oder einmalig am Anfang ein

sudo -i

Dann haben wir eine dauerhafte root-Shell

Wir vergeben eine feste IP, installieren alle Updates und installieren die VMware Tools.



3 Voraussetzungen installieren

apt-get 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 libssl0.9.8 gcc libssh-dev libpulse-dev tomcat7 tomcat7-admin tomcat7-docs ghostscript

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

http://servername-oder-ip:8080

aufruft kommt die Standardseite von Tomcat (It works !.



4 Guacamole herunterladen und kompilieren




4.1 Release Version

Bei der letzten Bearbeitung dieses Artikels war die Version

Guacamole 0.9.6

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

cd /usr/src
wget http://downloads.sourceforge.net/project/guacamole/current/source/guacamole-server-0.9.6.tar.gz
wget http://downloads.sourceforge.net/project/guacamole/current/binary/guacamole-0.9.6.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.6.tar.gz





5 Kompilieren

cd /usr/src/guacamole-server-0.9.6
./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.6
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libssh2 ............. yes
     libssl .............. yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes

   Protocol support:

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

   Init scripts: /etc/init.d

Type "make" to compile guacamole-server.

Prima. Also kompilieren und installieren wir:

make
make install




6 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.7: 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[25039]: INFO:     Guacamole proxy daemon (guacd) version 0.9.5 started
SUCCESS


Wir beenden den Server aber gleich wieder:

/etc/init.d/guacd stop

da wir erst einmal die Konfigurationsdateien anlegen müssen.

Important.png
Hinweis: Natürlich starten wir den Dienst normalweise mit service guacd start und nicht direkt über das init.d Skript - aber so sehen wir Fehlermeldung die beim service-Befehl oft unterdrückt werden




7 Guacamole Server konfigurieren

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

mkdir /etc/guacamole

und erstellen die Server-Konfigurationsdatei:


7.1 guacamole.properties

nano /etc/guacamole/guacamole.properties

Inhalt:

# genaue Beschreibung der Paramter siehe unter
# http://guac-dev.org/doc/gug/configuring-guacamole.html#initial-setup
# -------------------------------------------------------------------- 

# Hostname und Port des Servers auf dem der Guacamole-Server läuft
guacd-hostname: localhost
guacd-port: 4822

# Pfad zu .jar Dateien die vom Client nachgeladen werden können
lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes

# Welche Methode wird für die Anmeldung verwendet?
# Hier nehmen wir BasicFileAuthenticationProvider der ohne zusätzliche Module auskommt
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

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




7.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 http://guac-dev.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 http://guac-dev.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>




8 Automatischen Start des Servers einrichten

Wie immer einfach ein

update-rc.d guacd defaults




9 Fehler Dateiaustausch und Audio beheben

Guacamole kann in einer SSH oder RDP Sitzung auch Audiosignale weitereichen.
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 2 Plugins von Guacamole nicht finden kann.
Den Fehler beheben wir mit den nächsten beiden Zeilen:

ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib/x86_64-linux-gnu/freerdp/
ln -s /usr/local/lib/freerdp/guacsnd.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

/etc/src/guacamole-0.9.6.war

bereit liegen.
Kopieren wir diese an Ihren Bestimmungsort:

cp /usr/src/guacamole-0.9.6.war /var/lib/tomcat7/webapps/guacamole.war


Der Client erwartet die gleiche(!) guacamole.properties die auch der Server nutzt - allerdings an einem anderen Ort.
Deshalb legen wir einen symbolischen Link dahin an:

mkdir /usr/share/tomcat7/.guacamole
ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/


Nun müssen wir den Tomcat neu starten:

service tomcat7 restart




11 Der erste Test

Wir starten den Dienst wieder:

service guacd start

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

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


Important.png
Hinweis: Die Screenshots sind noch von der 0.9.3 Version. Ein Unterschied ist das die Verbindungen NICHT mehr in einem neuen Tab geöffnet werden (beim klicken STRG gedrückt halten dann geht es).
Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-001.png


Und melden uns mit dem gerade angelegten Benutzer an:

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



Ein Klick auf die Verbindungen unten startet jeweils einen neuen Browser-Tab mit der ausgewählten Verbindung:

Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-003.png Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-004.png




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 /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? Keine Ahnung, ich nutze dazu ISPConfig und bearbeite hinterher nur die .vhost Datei.



14 Apache .vhost anpassen

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.42.10:80>

                # Hier erfolgt nur eine Umleitung von http:// auf https://
                # also immer verschlüsselter Zugriff

                ServerName login.znil.net
                ServerAdmin webmaster@znil.net

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

</VirtualHost>


<VirtualHost 192.168.42.10:443>

                ServerName login.znil.net
                ServerAdmin webmaster@znil.net

                SSLEngine on
                SSLProtocol All -SSLv2 -SSLv3
                SSLCertificateFile /var/www/clients/client0/web24/ssl/login.znil.net.crt
                SSLCertificateKeyFile /var/www/clients/client0/web24/ssl/login.znil.net.key

                ProxyPass / http://192.168.42.55:8080/guacamole/ max=20 flushpackets=on
                ProxyPassReverse / http://192.168.42.55:8080/guacamole/
                ProxyPassReverseCookiePath /guacamole /

                SetEnvIf Request_URI "^/tunnel" dontlog
                CustomLog  /var/log/apache2/guac.log common env=!dontlog

</VirtualHost>

Ihr müsstet folgendes anpassen:

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


Nach einem Neustart des Apache

service apache2 restart

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

https://login.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:

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




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


16.1 Vorbereitung

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

mkdir /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.


16.2 Konfiguration der Verbindung

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

Enable drive: X
Drive path:   /home/tausch


Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-010.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.



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



17.1 MySQL installieren

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

apt-get install mysql-server mysql-client



17.2 MySQL Extension herunterladen und entpacken

Also, wir haben hier die Version

0.9.6

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

http://sourceforge.net/projects/guacamole/files/current/extensions/
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://downloads.sourceforge.net/project/guacamole/current/extensions/guacamole-auth-jdbc-0.9.6.tar.gz
tar xvzf guacamole-auth-jdbc-0.9.6.tar.gz
cd guacamole-auth-jdbc-0.9.6/mysql/




17.3 Lib-Dateien kopieren

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

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

müssen in das in der guacamole.properties angegebene lib-directory kopieren.
Alternativ kopieren wir die Dateien woanders hin und passen den Pfad an *g*.
Zielpfad ermitteln:

cat /etc/guacamole/guacamole.properties | grep lib

Ausgabe:

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

also dorthin damit:

cp /usr/src/guacamole-auth-jdbc-0.9.6/mysql/guacamole-auth-jdbc-mysql-0.9.6.jar /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/




17.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.35.tar.gz
tar xvzf mysql-connector-java-5.1.35.tar.gz
cp /usr/src/mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/



Euer Verzeichnis müsste dann etwas so aussehen:

ls -l /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/


root@ubuntu-test:/usr/src# ls -l /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/
insgesamt 2596
-rw-r--r-- 1 root    root    1671588 Mai  6 10:27 guacamole-auth-jdbc-mysql-0.9.6.jar
-rw-r--r-- 1 tomcat7 tomcat7    1549 Mär 30 18:31 logback.xml
-rw-r--r-- 1 root    root     968670 Mai  6 10:35 mysql-connector-java-5.1.35-bin.jar
drwxr-xr-x 3 tomcat7 tomcat7    4096 Mai  5 18:20 net
drwxr-xr-x 3 tomcat7 tomcat7    4096 Mai  5 18:20 org




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



17.6 Schema in MySQL importieren

Die liegen unter

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




17.7 guacamole.properties an MySQL anpassen

Nun müssen wir noch die Konfigurationsdatei ändern.
Zu Zeit steht da noch drin das die Authentifizierung über die

/etc/guacamole/user-mapping.xml

erfolgen soll - und das müssen wir auf MySQl und die Datenbank ändern:

nano /etc/guacamole/guacamole.properties

und den Inhalt wie folgt ändern:

# genaue Beschreibung der Paramter siehe unter
# http://guac-dev.org/doc/gug/configuring-guacamole.html#initial-setup
# --------------------------------------------------------------------

# Hostname und Port des Servers auf dem der Guacamole-Server läuft
guacd-hostname: localhost
guacd-port: 4822

# Pfad zu .jar Dateien die vom Client nachgeladen werden können
lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes

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

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

# Verbindungsdaten zur MySQL-Datenbank:
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole
mysql-username: guacamole
mysql-password: guacamole


Nun noch den Tomcat neu starten:

service tomcat7 restart




17.8 An der Webseite Anmelden

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

Benutzername: guacadmin
Passwort:     guacadmin
Guacamole-Ubuntu-14.04-Apache-Reverse-Proxy-006.png

Bei euch wird die Meldung in englisch sein, ich habe bei mir das ganze mal übersetzt.


Und schon habt Ihr oben rechts einen neuen Button für die Administration:

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


Als erstes solltet Ihr das Passwort des Administrationsbenutzers ändern!



18 Alternativ: Authentifizierung an Guacamole deaktivieren

Es ist auch möglich die Anmeldeseite von Guacamole ganz abzuschalten - um z.B. andere Sicherheitsmechanismen zu nutzen oder für die interne Verwendung.
Allerdings kann dan JEDER der die Guacamole-Webseite aufruft auf alle Verbindungen zugreifen!
Aber man muss ja in den Verbindungen kein Passwort speichern.
Ausserdem lassen sich die Verbindungen nicht über das Webinterface verwalten sondern wieder nur über eine .XML-Datei.



18.1 Vorraussetzungen

Ihr solltet zunächste eine ganz normale Installation machen und testen - also mit der Anmeldung an der Webseite und ein oder 2 Testverbindungen.
Aber OHNE das MySQL-Modul.
Wenn das funktioniert macht hier weiter!



18.2 NoAuth-Plugin herunterladen

Achtung: Anleitung für die Version

0.9.7

Download:

cd /usr/src/
wget http://downloads.sourceforge.net/project/guacamole/current/extensions/guacamole-auth-noauth-0.9.7.tar.gz
tar xvzf guacamole-auth-noauth-0.9.7.tar.gz
cd guacamole-auth-noauth-0.9.7/




18.3 Lib-Dateien kopieren

alle Dateien aus dem Unterverzeichnis

/usr/src/guacamole-auth-noauth-0.9.7/lib

müssen in das in der guacamole.properties angegebene lib-directory
Oder wir kopieren die Dateien woanders hin und passen den Pfad an *g*.

cat /etc/guacamole/guacamole.properties | grep lib
lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes

also dorthin damit:

cp /usr/src/guacamole-auth-noauth-0.9.7/lib/* /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/




18.4 guacamole.properties an NoAuth anpassen

Nun müssen wir noch die Konfigurationsdatei ändern.
Zu Zeit steht da noch drin das die Authentifizierung über die

/etc/guacamole/user-mapping.xml

erfolgen soll - und das müssen wir auf abschalten indem wir auf das NoAuth-Modul verweisen und die neue Datei für die Verbindungen angeben:

nano /etc/guacamole/guacamole.properties

und den Inhalt wie folgt ändern:

 auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider


Nun noch den Tomcat neu starten:

service tomcat7 restart




18.5 noauth-config.xml anlegen

Die Verbindungen werden nun zentral in der Datei

nano /etc/guacamole/noauth-config.xml

gepflegt:

<configs>

        <!-- Beispiel RDP-Verbindung -->
        <!-- Parameter siehe http://guac-dev.org/doc/gug/configuring-guacamole.html#rdp -->
        <!-- Aber bitte die etwas andere Schreibweise beachten! -->
        <config name="RDP Terminalserver" protocol="rdp">
                <param name="hostname" value="192.168.42.85" />
                <param name="port" value="3389" />
                <param name="disable-audio" value="true" />
                <param name="server-layout" value="de-de-qwertz" />
                <param name="ignore-cert" value="true" />
        </config>

        <config name="SSH Zabbix-Server" protocol="ssh">
                <param name="hostname" value="192.168.42.15" />
                <param name="port" value="22" />
        </config>

</configs>


Im Anschluss die Dienste einmal neu starten

service guacd restart && service tomcat7 restart

und dann könnt Ihr testen - also eure Guacamole-Webseite aufrufen. Die hat dann zwar oben rechts noch einen Button zum Abmelden - der ist nun aber ohne Funktion.

Important.png
Hinweis: Nach jeder Konfigurationsänderung müsst ihr zumindest den Tomcat neu starten. Dabei werden dann leider alle bestehenden Verbindungen unterbrochen




18.6 Direkte Links

Mit der NoAuth-Erweiterung funktionieren nun auch direkte Links! Wenn ich z.B. die obige Testverbindung

<config name="RDP Terminalserver" protocol="rdp">

also mit dem Namen

RDP Terminalserver

aufrufe startet er mit einen neue Tab

http://192.168.42.15:8080/guacamole/client.xhtml?id=c%2FRDP%20Terminalserver

Das%20 stehen dabei für das Leerzeichen.
Den Link kann ich nun auch immer direkt aufrufen - oder auch auf anderen Webseiten darauf verklinken, z.B. aus einem Wiki heraus!



19 Upgrade von 0.9.6 auf 0.9.7

Es gibt eine neuere Version die völlig anders Konfiguriert wird ... aber die alte methode funktioniert auch noch!
Deshalb können wir relativ leicht Upgraden, nachfolgend findet ihr alle Schritte für Guacamole mit SQL:

Programmdateien:

cd /usr/src
wget http://downloads.sourceforge.net/project/guacamole/current/source/guacamole-server-0.9.7.tar.gz
wget http://downloads.sourceforge.net/project/guacamole/current/binary/guacamole-0.9.7.war
tar xvzf guacamole-server-0.9.7.tar.gz
cd /usr/src/guacamole-server-0.9.7
./configure --with-init-dir=/etc/init.d
service guacd stop
make
make install
ldconfig

Client:

service tomcat7 stop
rm /var/lib/tomcat7/webapps/guacamole.war
rm -R /var/lib/tomcat7/webapps/guacamole
cp /usr/src/guacamole-0.9.7.war /var/lib/tomcat7/webapps/guacamole.war

SQL-Erweiterung:

cd /usr/src/
wget http://downloads.sourceforge.net/project/guacamole/current/extensions/guacamole-auth-jdbc-0.9.7.tar.gz
tar xvzf guacamole-auth-jdbc-0.9.7.tar.gz
cd guacamole-auth-jdbc-0.9.7/mysql/
cp /usr/src/guacamole-auth-jdbc-0.9.7/mysql/guacamole-auth-jdbc-mysql-0.9.7.jar /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/
service tomcat start
cd /usr/src/
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.35.tar.gz
tar xvzf mysql-connector-java-5.1.35.tar.gz
cp /usr/src/mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/
mysql -uguacamole -pguacamole guacamole < /usr/src/guacamole-auth-jdbc-0.9.7/mysql/schema/upgrade/upgrade-pre-0.9.7.sql
echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat7

Finale:

service guacd restart && service tomcat7 restart




20 Kommentare


damianbento@gmail.com

45 Monaten zuvor
Punktzahl 0++

You are the best, you've created a great tutorial. So I have some issue with a deutsch but a friend of mine gave me a little help

Great job !!

Alex

45 Monaten zuvor
Punktzahl 0++

Moin,

super Anleitung, funktioniert wunderbar auch unter Debian 8. Das einzige Problem das ich habe ist, dass die RDP Verbindung auf meine Windows Server nicht aufgebaut wird (das funktioniert aber auch unter ubuntu nicht)

Gruß Alex

Noah

25 Monaten zuvor
Punktzahl 0++
Muss bei deinem Problem bei Guacamole auf keine Zertifikat setzten und auf Windows den Port 3899 auf eingangs und ausgangs Firewall öffnen.

Alex

45 Monaten zuvor
Punktzahl 0++
Kaum geschrieben und auch schon gelöst. Ich hatte nur Verbindungen mit Authentifizierung auf Netzwerkebene zugelassen, daher ging es nicht.

demelch@gmail.com

45 Monaten zuvor
Punktzahl 0++
Wie hast du das genau hinbekommen ? Danke schön

Sparky

44 Monaten zuvor
Punktzahl 0++

Vielen lieben Dank für dein Tut. Ich habe gestern mal versucht nach dem Tutorial von guac-dev zu handeln und bin dabei kläglich gescheitert. Besonders deine Config Files halfen sehr. Auch kam mir das Tutorial des Entwicklers nicht ganz vollständig vor, zB wurde da nie ein Tomcat installiert. Schlimmer war deren Anleitung für die MySQL Authentifizierung.

Vielen Dank, es hat super geklappt, auch mit der 0.9.7!

BLinz

44 Monaten zuvor
Punktzahl 0++

Puhh wieder eine neue Version ... und bei der haben die wieder alles umgestrickt. Ich schau mal die Tage da eine neue Anleitung für zu erstellen.

Diese Anleitung funktioniert noch - aber nur weil die Entwickler die Optionen aus Kompatibilitätsgründen drin gelassen haben

Uli

44 Monaten zuvor
Punktzahl 0++

Super Tut. Klappt alles, ich hab eben ein Update auf 0.9.7 gemacht und nachdem das Tut auf der Entwicklerseite nichts passte (MYSQL Auth) deins wieder rausgezogen, jetzt alle gehts wieder ;-) Ich hab zwei Probleme die ich bis dato noch nicht gelöst habe ggf. kannst du helfen 1. wenn ich per RDP auf die Console einer Virtualbox will werde ich mit eine Fehler "unsupported encryption flag 00000013!!!" abgewiesen. Hab schon alles versuch alle Enc. Methoden ausprobiert

2. Ich will direkt ein Programm starten (z.B. Notepad; Open Office ) das hab ich auch noch nicht zusammengebracht.

BLinz

44 Monaten zuvor
Punktzahl 0++

zu 1 kann ich nichts sagen - aber mit 2. habe ich auch schon gekämpft - und es nicht hinbekommen. Ich habe es dann über eine Gruppenrichtlinie auf dem Server gelöst.

Die Lösung dafür nehme ich aber gerne.

Peter Philipp

43 Monaten zuvor
Punktzahl 0++

Hi,

sehr schönes Tutorial!

Eine Frage: Meine Windows 7 und Windows Server Installationen sind problemlos über RDP erreichbar, aber Windows 10 will nicht. Hat das jemand hier schon hinbekommen? Viele Grüße

Peter

Frank Stolzenberger

43 Monaten zuvor
Punktzahl 0++

Hallo,

erst einmal ein super Tutorial.

Aber, an was kann es liegen, daß sich nur ein Zahnrad dreht und keine Anmeldemaske erscheint.

Danke und Gruß

Frank

BLinz

43 Monaten zuvor
Punktzahl 0++

Könnte folgendes sein:

  • Dienste von Tomcat und Guacamole noch mal neu starten
  • Du hast an den Sprachdateien rumgespielt ...
  • Anderen Browser nehmen / Cache löschen
  • Es gibt einen Fehler in der Konfiguration ... SQL nicht erreichbar etc. Schau mal ins SYSLOG

Frank Stolzenberger

43 Monaten zuvor
Punktzahl 0++

Danke für die Antwort

1. System wurde mehrmals neu getsartet 2. Ich habe das System Grundinstalliert und dann mit Deiner Anleitung angefangen 3. Mit IE, Chrome und Firefox getestet, Cache geleert -> selbes Problem

4. Ist noch gar nicht implementiert

hgw

43 Monaten zuvor
Punktzahl 0++
vielen Dank für die HowTo, das hat mir sehr geholfen!!! guacamole ist echt ein wirklich nützliches stück software :-)

hgw

42 Monaten zuvor
Punktzahl 0++

Hallo :)

es gibt leider ein Fehler bei der Beschreibung für das noauth plugin, habe mir einen Wolf gesucht bis ich die Lösung gefunden habe, hier für alle wie ich es gelöst haben, vielleicht kann man das oben noch ergänzen?

1. wget http://downl…0.9.7.tar.gz 2. tar xvzf guacamole-auth-noauth-0.9.7.tar.gz 3. cd guacamole-auth-noauth-0.9.7/ 4. das jar muss in das in der guacamole.properties angegebene lib-directory kopiert werden 5. cp ./guacamole-auth-noauth-0.9.7/guacamole-auth-noauth-0.9.7.jar /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/ 6. Wichtig! auth provider in /etc/guacamole/guacamole.properties anpassen "auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider" 7. /etc/guacamole/noauth-config.xml erzeugen (damit wird user-mapping überflüssig)

8. guacd und tomcat durchreisen ein bisschen warten und jetzt sollte es ohne login gehen :-)

hgw

42 Monaten zuvor
Punktzahl 0++

ok die Formatierung ist total mähhh ich versuche es nochmal....

1. wget http://downl…0.9.7.tar.gz

2. tar xvzf guacamole-auth-noauth-0.9.7.tar.gz

3. cd guacamole-auth-noauth-0.9.7/

4. das jar muss in das in der guacamole.properties angegebene lib-directory kopiert werden

5. cp ./guacamole-auth-noauth-0.9.7/guacamole-auth-noauth-0.9.7.jar /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes/

6. Wichtig! auth provider in /etc/guacamole/guacamole.properties anpassen "auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider"

7. /etc/guacamole/noauth-config.xml erzeugen (damit wird user-mapping überflüssig)

8. guacd und tomcat durchreisen ein bisschen warten und jetzt sollte es ohne login gehen :-)

BLinz

42 Monaten zuvor
Punktzahl 0++
Ich muss zugeben das ich das NoAuth Plugin noch nicht mit der neuen Version wieder getestet hatte - Danke für deine Lösung die ich oben nun eingebaut habe

office8ox-2015@yahoo.com

42 Monaten zuvor
Punktzahl 0++

Kann es sein, dass die .vhost Datei einen kleinen Fehler drin hat?


Hat nicht funktioniert:

ProxyPass / http://192.1…0/guacamole/ max=20 flushpackets=on ProxyPassReverse / http://192.1…0/guacamole/ ProxyPassReverseCookiePath /guacamole /

Das hat funktioniert (Apache/2.2.22 (Debian)):

ProxyPass / http://192.1…80/guacamole max=20 flushpackets=on ProxyPassReverse / http://192.1…80/guacamole ProxyPassReverseCookiePath /guacamole /

Danke für die nette Anleitung, hat sehr geholfen.

office8ox-2015@yahoo.com

42 Monaten zuvor
Punktzahl 0++

Kann es sein, dass die .vhost Datei einen kleinen Fehler drin hat?


Hat nicht funktioniert:

ProxyPass / http://192.1…0/guacamole/ max=20 flushpackets=on

ProxyPassReverse / http://192.1…0/guacamole/

ProxyPassReverseCookiePath /guacamole /


Das hat funktioniert (Apache/2.2.22 (Debian)):

ProxyPass / http://192.1…80/guacamole max=20 flushpackets=on

ProxyPassReverse / http://192.1…80/guacamole

ProxyPassReverseCookiePath /guacamole /


Danke für die nette Anleitung, hat sehr geholfen.

BLinz

42 Monaten zuvor
Punktzahl 0++
Ähm, kann es sein das du a.) entweder zufällig die geichen IP-Adressen verwendest wie ich in meinem Beispiel oder b.) du vergessen hast die IP-Adressen anzupassen?

andre

42 Monaten zuvor
Punktzahl 0++

Hallo,

so etwas suche ich, habe mich aber noch nicht rangetraut. ich wollte den Server installieren, damit ich von "Überall" über port 80 mit einem Browser auf meinen Win Rechner zugreifen kann.

Was mir nicht klar ist: wozu braucht es den Guacomola Client?

Läuft der Zugriff nicht über den entfernten Browser?

Ist das mit der Subdomain wichtig?

Vielen Dank und Gruß,

Andre

BLinz

42 Monaten zuvor
Punktzahl 0++

Du kannst nicht mit einem Webbrowser einfach per RDP auf einen entfernten Rechner per RDP zugreifen. Im Normalfall nutzt du dazu den Remotedesktopclient. Der nutzt den Port 3389 welcher oftmals in Firewalls gesperrt ist.

Guacamole ist auch ein Remotedesktopclient - nur das er dir die RDP-Sitzung in den Webbrowser "übersetzt". Vereinfacht gesagt: Guacamole übersetzt RDP in HTML, dieses HTML stellt "Tomcat", ein Webserver für uns dar. Leider wieder auf einem Port den wir im normalfall nicht erreichen können (8080). Apache (noch ein Webserver) setzt uns das auf Port 80 und/oder 443 um - diese Ports gehen im normalfall immer.

Das mit der Subdomain ist nicht wichtig, es ginge auch mit http://deineadresse/guacamole - aber ich setze nun mal gerne pro Dienst eine eigene Subdomain ein und deshlab habe ich das hier auch so beschrieben.

Andre

42 Monaten zuvor
Punktzahl 0++

Hallo, danke für die Rückmeldung :-)

In der Zwischenzeit habe ich auch versucht es besser zu verstehen und habe mir mal zum Test diese VMware geladen und gestartet.: http://www.g…iance-0-9-6/ Ich habe es auch erfolgreich zum laufen gebracht und bin begeistert. Ein wenig schlauer bin ich jetzt schon. Nun möchte ich dies aber auf eine Raspberry Pi installieren.

Verstehe ich das richtig? Als Webserver läuft der Tomcat. Tomcat kommuniziert mit dem Guacamole -Server.

Apache ist jetzt noch notwendig, um von von draußen, über 80 und/oder 443, reinkommen. Dann geht es zum Tomcat, der dann mit Guacamole kommuniziert.

Ich habe gelesen, dass viele für die Verbindung nach draußen nginx einsetzen, ist das egal? Also anstatt Apache.

Zu den Subdomains: Vieleicht brauche ich die doch?

Ich stelle mir folgendes vor:

Von Außen möchte ich Guacamole erreichen, um meine Rechner Fernzuwarten.

z.B. : https://ichd…e/guacamole/

Dann auf dem gleichen Server noch ein anderen Webdienst; vielleicht Owncloud,,

https://ichdyndns.de/owncloud/

ist das machbar? Anleitungen im Netz empfehlen?

Viele Grüße,

Andre

Pi-Feng

42 Monaten zuvor
Punktzahl 0++
For some reason, I can not find client.xhtml in my tomcat web directory or software build. Where is it? Thanks

Pi-Feng

42 Monaten zuvor
Punktzahl 0++
Aus irgendeinem Grund kann ich nicht finden client.xhtml in meinem Tomcat Web- Verzeichnis oder Software-Build . Wo ist es? Vielen Dank

lin.pifeng@gmail.com

42 Monaten zuvor
Punktzahl 0++
I can not find client.xhtml in my tomcat folder. Please help!

BLinz

42 Monaten zuvor
Punktzahl 0++
You need the client.xhtml for what? Did not find the file at this site ...

41 Monaten zuvor
Punktzahl 0++

Funktioniert auch für 0.9.8. Nur beim Update darauf achten die Versionsnummer 0.9.8 beim sql-update mitzunehmen und natürlich auch beim Auth-Modul.

Super Anleitung im Übrigen.

geppertmarmail.com

41 Monaten zuvor
Punktzahl 0++

Hi, Installation hat Super geklappt,

allerdings schlägt der login immer fehl.

Dieosn@outlook.de

40 Monaten zuvor
Punktzahl 0++
Hallo, ich habe einen Apache2 SSL Webserver erfolgreich im Netz laufen auf dem eine Cloud läuft. Ist es möglich hierauf jetzt den Guacamole Server zu installieren oder benötige ich noch einen zweiten Server. In deiner Einleitung hast du geschrieben das es vielleicht auch auf dem Webserver gehen müsste. Danke !

BLinz

40 Monaten zuvor
Punktzahl 0++
Ja geht, mache ich inzwischen auch so

Dieosn@outlook.de

40 Monaten zuvor
Punktzahl 0++
Hi, danke für die schnelle Antwort. Kann ich die Installation nach deiner Anleitung so durchführen oder gibt es da was besonderes zu beachten, möchte mir nicht den Webserver oder Cloud crashen. Danke

BLinz

40 Monaten zuvor
Punktzahl 0++

Nein, musst nichts beachten, die verwendeten Ports sind im Normalfall frei.

Du musst bei der Reverse Proxy Konfiguration dann natürlich den lokalen Host angeben (als IP, 127.0.0.1 geht auch)

Jaymans

34 Monaten zuvor
Punktzahl 0++

Mahlzeit,

ich habe die versucht Guacamole mit der Anleitung auf meiner VM - Xubuntu zu installieren. Bisher hat alles super geklappt, obwohl ich Guacomole 0.9.9 verwendet habe. Leider hänge ich nach dem Schritt Schema in My-SQL imprtieren fest. Fehlermeldung dabei: Access denied for user 'Guacamole'@'localhost' (using password: YES)

Kann mir jemand weiterhelfen? Ich habe im übrigen auch den My-SQL-Connector 5.1.38 genutzt.

fa98x41@gmail.com

34 Monaten zuvor
Punktzahl 0++

Hallo!

Kann jemand eine kurze Anleitung für das Xrdp erstellen. Ich bekomme den RDP Teil nicht zum laufen. Zugriff auf SSH funktioniert.
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.