Ubuntu 14.04.x LTS - Guacamole HTML5 Remotedesktop Gateway installieren mit Apache Reverse Proxy
Aus znilwiki
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.
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.
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.
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 !.
Guacamole herunterladen und kompilieren
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
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
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.
Guacamole Server konfigurieren
Wir legen das Verzeichnis für die Konfigurationsdateien an das Guacamole erwartet:
mkdir /etc/guacamole
und erstellen die Server-Konfigurationsdatei:
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
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>
Automatischen Start des Servers einrichten
Wie immer einfach ein
update-rc.d guacd defaults
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/
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
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/
Und melden uns mit dem gerade angelegten Benutzer an:
Ein Klick auf die Verbindungen unten startet jeweils einen neuen Browser-Tab mit der ausgewählten Verbindung:
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
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.
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
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:
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.
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.
Konfiguration der Verbindung
In einer RDP-Verbindung wählen wir nun folgende Optionen
Enable drive: X Drive path: /home/tausch
Das ist schon alles. Sind wir nun Verbunden wird uns der Ordner unter dem Arbeitsplatz angezeigt:
Zum Testen zieht nun einfach eine Datei in das Browserfenster:
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:
Er lädt die Datei dann runter und mit dem Klick auf den Link könnt Ihr diese lokal speichern.
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!
MySQL installieren
Falls es noch nicht auf eurem Server ist muss MySQL erst einmal installiert werden:
apt-get install mysql-server mysql-client
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/
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/
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/
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
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.
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
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
An der Webseite Anmelden
Wir melden uns nun an der Guacamole Webseite folgenden Daten an:
Benutzername: guacadmin Passwort: guacadmin
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:
Als erstes solltet Ihr das Passwort des Administrationsbenutzers ändern!
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.
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!
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/
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/
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
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.
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!
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