GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte vzdálenou plochu Apache Guacamole na serveru Ubuntu 20.04

Tento tutoriál vám ukáže, jak nastavit vzdálenou plochu Guacamole na serveru Ubuntu 20.04. 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 Ubuntu 20.04 a nainstalujte balíčky závislostí.

sudo apt update

sudo apt install build-essential libcairo2-dev libjpeg-turbo8-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="1060b7b46a3bd36b3a0d66e0127d0517"
         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 server Ubuntu 20.04

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 dobře s VNC, takže jej nainstalujte pomocí následujícího příkazu.

sudo apt install xfce4 xfce4-goodies firefox

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 na Ubuntu.

  • Jak používat UFW Firewall v systémech Debian, Ubuntu, Linux Mint

Krok 5:Instalace serveru VNC na server Ubuntu 20.04

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

vncserver vytvoří dva soubory ve vašem domovském adresáři.

  • ~/.Xauthrirty
  • ~/.vnc/xstartup

Soubor xstartup určuje aplikace, které budou spuštěny serverem TigerVNC. Upravte tento soubor.

nano ~/.vnc/xstartup

Změnit

#!/bin/sh

do

#!/bin/bash

Protože Bash je standardní Shell na Linuxu. Pak okomentujte následující řádky. (Přidejte # znak na začátku každého řádku).

xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession

Dále přidejte následující řádek do spodní části, díky kterému server TigerVNC spustí desktopové prostředí LXQT. startxfce4 binární se instaluje pomocí xfce4-session balíček.

startxfce4 &

Uložte a zavřete soubor.

Odstraňování problémů

Pokud váš server tigerVNC nevytvořil ~/.vnc/xstartup soubor a server VNC selhal jako níže:

Poté můžete soubor vytvořit ručně.

nano ~/.vnc/xstartup

Přidejte do souboru následující řádky.

#!/bin/sh

xrdb $HOME/.Xresources
startxfce4 &

Uložte a zavřete soubor.

Vytvoření služby Systemd

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žívání Apache, nainstalujte Apache z výchozího úložiště softwaru Ubuntu.

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žívání Nginx, nainstalujte Nginx z výchozího úložiště softwaru Ubuntu.

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 Ubuntu 20.04.

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 návod pomohl nastavit vzdálenou plochu Apache Guacamole na serveru Ubuntu 20.04. 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 🙂


Ubuntu
  1. Jak nainstalovat vzdálenou plochu (Xrdp) na Ubuntu 18.04

  2. Vzdálená plocha Ubuntu:Jak ji nastavit a připojit

  3. Jak nainstalovat Xrdp (Remote Desktop) na Ubuntu 20.04 LTS

  1. Jak spustit, zastavit nebo restartovat server Apache na Ubuntu

  2. Vzdálené sdílení plochy s AnyDesk na Ubuntu 20.04 Focal Fossa

  3. Převést Ubuntu Desktop 14.04 na server?

  1. Jak nainstalovat Xrdp Server (Remote Desktop) na Ubuntu 18.04

  2. Jak nainstalovat Xrdp Server (Remote Desktop) na Ubuntu 20.04

  3. Nainstalujte Apache Tomcat 9 Server na Ubuntu 20.04