Tento tutoriál vám ukáže, jak nastavit vzdálenou plochu Guacamole na serveru Debian 10. Guacamole je bezplatná brána vzdálené plochy s otevřeným zdrojovým kódem vyvinutá softwarovou nadací Apache.
Funkce guacamole
- Umožňuje vám přístup ke vzdálené ploše z webového prohlížeče. Na straně klienta není třeba instalovat žádný další software.
- Podporuje standardní protokoly jako VNC, RDP, SSH a Kubernetes.
- Relace VNC lze zaznamenávat graficky.
- Jednotné přihlášení pomocí CAS, OpenID Connect nebo SAML 2.0
- Wake-on-LAN
- Snadná správa více relací vzdálené plochy.
- Podporuje dvoufaktorové ověřování TOTP.
- Podporuje schránku (kopírování a vkládání) a přenos souborů přes SFTP.
- Podporuje zvukový vstup a výstup
- a další.
Guacamole sám o sobě není protokol vzdálené plochy. Je to proxy mezi vzdálenou plochou a klientem, takže vzdálenou plochu lze zobrazit a ovládat ve webovém prohlížeči.
Krok 1:Sestavte server Guacamole ze zdroje
Přihlaste se ke svému serveru Debian 10 a nainstalujte balíčky závislostí.
sudo apt install build-essential libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev
Stáhněte si nejnovější stabilní verzi guacamole-server.
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
Rozbalte archiv.
tar -xvf guacamole-server-1.2.0.tar.gz
Přejděte do extrahovaného adresáře.
cd guacamole-server-1.2.0
Nakonfigurujte prostředí sestavení.
./configure --with-init-dir=/etc/init.d
Poté zkompilujte guacamole-server.
sudo make
Nainstalujte server guacamole.
sudo make install
Aktualizujte mezipaměť systému nainstalovaných knihoven.
sudo ldconfig
Znovu načtěte systemd, aby mohl najít guacd
Služba (Démon proxy Guacamole) nainstalovaná v /etc/init.d/
adresář.
sudo systemctl daemon-reload
Spusťte guacd
službu.
sudo systemctl start guacd
Povolit automatické spouštění při spouštění.
sudo systemctl enable guacd
Zkontrolujte jeho stav.
systemctl status guacd
Jak vidíte, je aktivní (běžící) .
Guacd poslouchá na 127.0.0.1:4822
, jak lze ukázat pomocí ss
utility.
sudo ss -lnpt | grep guacd
Krok 2:Nainstalujte webovou aplikaci Guacamole
Webová aplikace Guacamole je napsána v jazyce Java, takže musíme nainstalovat kontejner Java Servlet, jako je Apache Tomcat.
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Apache Tomcat bude naslouchat na portu 8080, jak lze ukázat pomocí:
sudo ss -lnpt | grep java
Pokud máte jiný software, který naslouchá na portu 8080, pak se Tomcat nemůže vázat na port 8080. Měli byste nakonfigurovat druhý proces tak, aby používal jiný port, a poté restartovat Tomcat (sudo systemctl restart tomcat9
).
Dále si stáhněte webovou aplikaci Guacamole.
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war
Přesuňte soubor do adresáře webové aplikace (/var/lib/tomcat9/webapps
) a zároveň soubor přejmenujte (smažte číslo verze).
sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war
Restartujte Tomcat a guacd.
sudo systemctl restart tomcat9 guacd
Krok 3:Nakonfigurujte Guacamole
Vytvořte konfigurační adresář pro Guacamole.
sudo mkdir /etc/guacamole/
Vytvořte konfigurační soubor.
sudo nano /etc/guacamole/guacamole.properties
Přidejte do tohoto souboru následující řádky. Někteří lidé mohou říci, že tyto řádky nemusíte přidávat, protože se jedná o výchozí hodnoty. Ukážu vám základní konfiguraci, takže si ji můžete přizpůsobit, když to bude potřeba.
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 # Auth provider class (authenticates user/pass combination, needed if using the provided login screen) auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml
Uložte a zavřete soubor. Výchozí ověřovací modul v Guacamole čte uživatelská jména a hesla ze souboru XML:/etc/guacamole/user-mapping.xml
. Před vytvořením tohoto souboru musíme vygenerovat MD5 hash pro vaše heslo pomocí následujícího příkazu. Nahraďte your_password
s vaším preferovaným heslem.
echo -n your_password | openssl md5
Ukázkový výstup:
(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517
Dále vytvořte soubor XML pro mapování uživatele.
sudo nano /etc/guacamole/user-mapping.xml
Přidejte následující řádky. Zde specifikujeme, že backend bude používat protokol VNC (Vritual Network Computing). Nahraďte uživatelské jméno a hash hesla. Heslo VNC vytvoříme později.
<user-mapping> <!-- Per-user authentication and config information --> <authorize username="your_preferred_username" password="1060b7b46a3bd36b3a0d66e0127d051" encoding="md5"> <connection name="default"> <protocol>vnc</protocol> <param name="hostname">localhost</param> <param name="port">5901</param> <param name="password">vnc_password</param> </connection> </authorize> </user-mapping>
Uložte a zavřete soubor. Restartujte Tomcat a guacd.
sudo systemctl restart tomcat9 guacd
Krok 4:Instalace desktopového prostředí na Debian 10 Server
Protože budeme nastavovat vzdálenou plochu, potřebujeme desktopové prostředí. Před instalací desktopového prostředí se ujistěte, že má váš server dostatek paměti RAM. Existuje mnoho desktopových prostředí. Zjistil jsem, že lehké desktopové prostředí XFCE funguje ve VNC dobře, takže jej nainstalujte pomocí následujícího příkazu.
sudo apt update sudo apt install xfce4 xfce4-goodies
Během instalace můžete být požádáni o výběr výchozího správce zobrazení. Na této volbě moc nezáleží, protože v relaci VNC neuvidíte přihlašovací obrazovku.
Vzhledem k tomu, že na serveru běží desktopové prostředí, důrazně se doporučuje používat firewall, jako je UFW, abyste omezili přístup a otevřeli veřejnosti pouze nezbytné porty. Můžete si přečíst následující tutoriál, kde se dozvíte, jak povolit a používat UFW v Debianu.
- Jak používat UFW Firewall v systémech Debian, Ubuntu, Linux Mint
Krok 5:Instalace serveru VNC na server Debian 10
Pro uživatele Linuxu je k dispozici několik serverů VNC. Budeme používat server TigerVNC, protože nejlépe funguje s Guacamole.
sudo apt install tigervnc-standalone-server
Spusťte následující příkaz pro spuštění serveru VNC.
vncserver
Při prvním spuštění TigerVNC vás požádá o nastavení hesla VNC. Pamatujte, že heslo by nemělo mít více než 8 znaků. Poté si můžete vybrat, zda potřebujete heslo pouze pro prohlížení.
Nyní byste měli upravit /etc/guacamole/user-mapping.xml
soubor a změňte heslo VNC. Poté restartujte Tomcat a guacd.
sudo systemctl restart tomcat9 guacd
tigervnc-standalone-server
balíček se dodává se souborem /etc/X11/Xvnc-session
který říká TigerVNC, aby při spuštění spustil X server.
Server TigerVNC se nedodává s žádnými systémovými servisními jednotkami. Aby se to spustilo v době bootování, musíme vytvořit servisní jednotku systemd.
sudo nano /etc/systemd/system/[email protected]
Přidejte do souboru následující řádky. Nahraďte uživatelské jméno svým skutečným uživatelským jménem.
[Unit] Description=a wrapper to launch an X server for VNC After=syslog.target network.target [Service] Type=forking User=username Group=username WorkingDirectory=/home/username ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Uložte a zavřete soubor. Zastavte aktuální instanci serveru VNC.
vncserver -kill :1
Spusťte VNC server pomocí systemd.
sudo systemctl start [email protected]
Povolit automatické spouštění při spouštění.
sudo systemctl enable [email protected]
Zkontrolujte jeho stav:
systemctl status [email protected]
Jak vidíte, je aktivní (běží).
Nyní TigerVNC Server naslouchá na portu 5901.
sudo ss -lnpt | grep vnc
Krok 6:Nastavení reverzního proxy pro webovou aplikaci Guacamole
Apache Tomcat naslouchá na portu 8080. Abychom měli snadný způsob přístupu k webové aplikaci Guacamole, můžeme nastavit reverzní proxy s Apache nebo Nginx, takže koncoví uživatelé budou moci pro přístup k webové aplikaci používat název domény. Umožňuje nám také snadno nainstalovat certifikát TLS pro šifrování připojení.
Apache
Pokud dáváte přednost použití Apache, nainstalujte Apache z výchozího softwarového úložiště Debianu.
sudo apt install apache2
Chcete-li používat Apache jako reverzní proxy, musíme povolit proxy
moduly a modul záhlaví.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Poté vytvořte soubor virtuálního hostitele pro Guacamole.
sudo nano /etc/apache2/sites-available/guacamole.conf
Přidejte do souboru následující řádky. Nahraďte guacamole.example.com
s vlastním názvem domény. Nezapomeňte vytvořit záznam A pro subdoménu ve správci DNS. Pokud nemáte skutečný název domény, doporučuji přejít na NameCheap a koupit si ho. Cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.
<VirtualHost *:80> ServerName guacamole.example.com ErrorLog ${APACHE_LOG_DIR}/guacamole_error.log CustomLog ${APACHE_LOG_DIR}/guacamole_access.log combined <Location /> Require all granted ProxyPass http://localhost:8080/guacamole/ flushpackets=on ProxyPassReverse http://localhost:8080/guacamole/ </Location> <Location /websocket-tunnel> Require all granted ProxyPass ws://localhost:8080/guacamole/websocket-tunnel ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel </Location> Header always unset X-Frame-Options </VirtualHost>
Uložte a zavřete soubor. Otestujte syntaxi.
sudo apachectl -t
Pokud je Syntx v pořádku, povolte tohoto virtuálního hostitele.
sudo a2ensite guacamole.conf
Restartujte Apache
sudo systemctl restart apache2
Nyní máte přístup na přihlašovací stránku Apache Guacamole přes guacamole.example.com
. Pokud se zobrazí „neplatný požadavek“ nebo podobná chybová zpráva, může to znamenat, že Apache Tomcat se nemůže navázat na port 8080, protože tento port je již obsazen jiným procesem na serveru. Měli byste nakonfigurovat druhý proces tak, aby používal jiný port, a poté restartovat Tomcat.
Nginx
Pokud dáváte přednost použití Nginx, nainstalujte Nginx z výchozího úložiště softwaru Debian.
sudo apt install nginx
Vytvořte soubor bloku serveru pro Guacamole.
sudo nano /etc/nginx/conf.d/guacamole.conf
Přidejte do souboru následující řádky. Nahraďte guacamole.example.com
s vlastním názvem domény. Nezapomeňte vytvořit záznam A pro subdoménu ve správci DNS. Pokud nemáte skutečný název domény, doporučuji přejít na NameCheap a koupit si ho. Cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.
server { listen 80; listen [::]:80; server_name guacamole.example.com; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { proxy_pass http://127.0.0.1:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; } }
Uložte a zavřete tento soubor. Poté otestujte konfiguraci Nginx.
sudo nginx -t
Pokud je test úspěšný, znovu načtěte Nginx, aby se změna projevila.
sudo systemctl reload nginx
Nyní máte přístup na přihlašovací stránku Apache Guacamole přes guacamole.example.com
. Pokud se zobrazí „neplatný požadavek“ nebo podobná chybová zpráva, může to znamenat, že Apache Tomcat se nemůže navázat na port 8080, protože tento port je již obsazen jiným procesem na serveru. Měli byste nakonfigurovat druhý proces tak, aby používal jiný port, a poté restartovat Tomcat.
Povolit HTTPS
Pro šifrování HTTP provozu, když navštívíte webové rozhraní Guacamole, můžeme povolit HTTPS instalací bezplatného TLS certifikátu vydaného od Let’s Encrypt. Spuštěním následujícího příkazu nainstalujte klienta Let’s Encrypt (certbot) na Debian 10.
sudo apt install certbot
Pokud používáte Apache, musíte si nainstalovat plugin Certbot Apache.
sudo apt install python3-certbot-apache
Dále spusťte následující příkaz pro získání a instalaci certifikátu TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Pokud používáte Nginx, musíte si také nainstalovat plugin Certbot Nginx.
sudo apt install python3-certbot-nginx
Dále spusťte následující příkaz pro získání a instalaci certifikátu TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Kde:
--nginx
:Použijte plugin nginx.--apache
:Použijte plugin Apache.--agree-tos
:Souhlas se smluvními podmínkami.--redirect
:Vynutit HTTPS přesměrováním 301.--hsts
:Přidejte hlavičku Strict-Transport-Security do každé odpovědi HTTP. Vynucení prohlížeče, aby pro doménu vždy používal TLS. Chrání před odstraněním SSL/TLS.--staple-ocsp
:Umožňuje sešívání OCSP. Platná odpověď OCSP je přišita k certifikátu, který server nabízí během TLS.
Certifikát by nyní měl být získán a automaticky nainstalován.
A můžete přistupovat k webovému rozhraní Guacamole přes HTTPS. (https://guacamole.example.com).
Po přihlášení budete moci používat vzdálenou plochu.
Zabalení
Doufám, že vám tento tutoriál pomohl nastavit vzdálenou plochu Apache Guacamole na serveru Debian 10. Jako vždy, pokud vám tento příspěvek přišel užitečný, přihlaste se k odběru našeho bezplatného zpravodaje, kde získáte další tipy a triky. Opatruj se 🙂