本教程將向您展示如何在 Ubuntu 20.04 服務器上設置 Guacamole 遠程桌面。 Guacamole 是 Apache 軟件基金會的免費開源遠程桌面網關。

鱷梨醬的特點

  • 這允許您從 Web 瀏覽器訪問遠程桌面。客戶端不需要安裝任何額外的軟件。
  • 支持VNC、RDP、SSH、Kubernetes等標準協議。
  • VNC 會話可以以圖形方式記錄。
  • 使用 CAS、OpenID Connect 或 SAML 2.0 進行單點登錄
  • 局域網喚醒
  • 輕鬆管理多個遠程桌面會話。
  • 支持 TOTP2 元素身份驗證。
  • 支持剪貼板(複製和粘貼)和通過 SFTP 傳輸文件。
  • 支持音頻輸入輸出
  • 更多的。

鱷梨醬本身不是遠程桌面協議。因為它是遠程桌面和客戶端之間的代理,所以您可以在 Web 瀏覽器中查看和控制遠程桌面。

第 1 步:從源代碼構建 Guacamole 服務器

登錄 Ubuntu 20.04 服務器並安裝依賴項。

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

下載 guacamole-server 的最新穩定版本。

wget https://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz

提取存檔。

tar -xvf guacamole-server-1.2.0.tar.gz

切換到解壓後的目錄。

cd guacamole-server-1.2.0

配置構建環境。

./configure --with-init-dir=/etc/init.d

然後編譯 guacamole-server。

sudo make

安裝鱷梨醬服務器。

sudo make install

更新已安裝庫的系統緩存。

sudo ldconfig

重新加載systemd以便可以找到 guacd 安裝在(鱷梨醬代理守護進程)上的服務 /etc/init.d/ 目錄。

sudo systemctl daemon-reload

啟動 guacd 服務。

sudo systemctl start guacd

啟動時啟用自動啟動。

sudo systemctl enable guacd

檢查狀態。

systemctl status guacd

如你看到的 活動(運行)..

瓜德聽 127.0.0.1:4822正如你可以做的 ss 公共事業。

sudo ss -lnpt | grep guacd

guacd 端口 4822

第 2 步:安裝 Guacamole Web 應用程序

Guacamole Web 應用程序是用 Java 編寫的,因此您需要安裝一個 Java Servlet 容器,例如 Apache Tomcat。

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user

Apache Tomcat 監聽 8080 端口如下:

sudo ss -lnpt | grep java

ubuntu 20.04 apache tomcat 監聽端口 guacamole

如果其他軟件正在監聽 8080 端口,則 Tomcat 無法綁定到 8080 端口。您需要將其他進程配置為使用不同的端口,然後重新啟動 Tomcat (sudo systemctl restart tomcat9)。

然後下載 Guacamole Web 應用程序。

wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war

將文件移動到 Web 應用程序目錄 (/var/lib/tomcat9/webapps) 同時重命名文件(去掉版本號)。

sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war

重新啟動 Tomcat 和 guacd。

sudo systemctl restart tomcat9 guacd

第三步:設置鱷梨醬

為 Guacamole 創建一個配置目錄。

sudo mkdir /etc/guacamole/

創建一個配置文件。

sudo nano /etc/guacamole/guacamole.properties

將以下行添加到此文件中:有人可能會說這些行是默認的,不需要添加。這是基本配置,以便您可以根據需要對其進行自定義。

# 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

保存並關閉文件。 Guacamole 的默認身份驗證模塊從 XML 文件中讀取用戶名和密碼。 /etc/guacamole/user-mapping.xml..在創建此文件之前,您需要使用以下命令生成密碼的 MD5 哈希:交換 your_password 請使用您的首選密碼。

echo -n your_password | openssl md5

樣本輸出:

(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

接下來,創建一個用戶映射 XML 文件。

sudo nano /etc/guacamole/user-mapping.xml

添加以下行。這裡我們指定後端使用VNC(虛擬網絡計算)協議。替換用戶名和密碼的哈希值。稍後您將創建一個 VNC 密碼。

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

保存並關閉文件。 重新啟動 Tomcat 和 guacd。

sudo systemctl restart tomcat9 guacd

第四步:在Ubuntu 20.04服務器上安裝桌面環境

由於您正在設置遠程桌面,因此您需要一個桌面環境。在安裝桌面環境之前,請確保您的服務器有足夠的 RAM。有許多桌面環境。我發現一個輕量級的 XFCE 桌面環境可以與 VNC 一起使用,所以我使用以下命令安裝了它:

sudo apt install xfce4 xfce4-goodies firefox

在安裝過程中,系統可能會提示您選擇默認顯示管理器。 此選擇並不重要,因為 VNC 會話不會顯示登錄屏幕。

由於服務器運行的是桌面環境,因此強烈建議您使用 UFW 等防火牆來限制訪問並僅公開您需要的端口。您可以閱讀以下教程以了解如何在 Ubuntu 上啟用和使用 UFW。

  • 如何在 Debian、Ubuntu、Linux Mint 中使用 UFW 防火牆

第 5 步:在 Ubuntu 20.04 服務器上安裝 VNC 服務器

Linux 用戶可以使用各種 VNC 服務器軟件。使用最適合 Guacamole 的 Tiger VNC 服務器。

sudo apt install tigervnc-standalone-server

通過運行以下命令啟動 VNC 服務器:

vncserver

首次啟動 TigerVNC 時,系統會提示您設置 VNC 密碼。請注意,密碼不得超過 8 個字符。然後您可以選擇是否只顯示密碼。

guacamoletightvncserver 密碼 ubuntu20.04

現在你需要編輯 /etc/guacamole/user-mapping.xml 創建文件並更改 VNC 密碼。然後重啟Tomcat和guacd。

sudo systemctl restart tomcat9 guacd

這個 vncserver 此命令在您的主目錄中創建兩個文件。

  • ~ / .Xauthrirty
  • ~/.Vnc/xstartup

xstartup 文件指定由 TigerVNC 服務器啟動的應用程序。編輯此文件。

nano ~/.vnc/xstartup

改變

#!/bin/sh

到達

#!/bin/bash

Bash 是標準的 Linux shell。然後註釋掉以下行: (加一 # 每行的第一個字符)。

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

然後在底部添加以下行:這將導致 TigerVNC 服務器啟動 LXQT 桌面環境。這個 startxfce4 二進製文件 xfce4-session 盒。

startxfce4 &

保存並關閉文件。

故障排除

如果未創建tigerVNC服務器 ~/.vnc/xstartup 文件和 VNC 服務器失敗如下:

Tigervncserver -xstartup

然後您可以手動創建文件。

nano ~/.vnc/xstartup

將以下行添加到文件中。

#!/bin/sh

xrdb $HOME/.Xresources
startxfce4 &

保存並關閉文件。

創建系統服務

TigerVNC 服務器不附帶 systemd 服務單元。您必須創建一個 systemd 服務單元以在引導時啟動。

sudo nano /etc/systemd/system/[email protected]

將以下行添加到文件中。將用戶名替換為實際用戶名。

[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

保存並關閉文件。停止當前的 VNC 服務器實例。

vncserver -kill :1

使用 systemd 啟動 VNC 服務器。

sudo systemctl start [email protected]

啟動時啟用自動啟動。

sudo systemctl enable [email protected]

檢查其狀態:

systemctl status [email protected]

如您所見,它處於活動狀態。

systemctl 狀態 vncserver@1.service ubuntu 20.04

TigerVNC 服務器現在正在偵聽端口 5901。

sudo ss -lnpt | grep vnc

ubuntu20.04 Tigervncserver監聽端口

第 6 步:為您的 Guacamole Web 應用程序設置反向代理

Apache Tomcat 正在偵聽端口 8080。 為了輕鬆訪問您的 Guacamole Web 應用程序,您可以設置反向代理 Apache 或 Nginx 以允許最終用戶使用您的域名訪問您的 Web 應用程序。您還可以輕鬆安裝 TLS 證書來加密您的連接。

阿帕奇

如果您使用 Apache,請從默認的 Ubuntu 軟件存儲庫安裝 Apache。

sudo apt install apache2

必須啟用 Apache 作為反向代理 proxy 模塊和頭模塊。

sudo a2enmod proxy proxy_http headers proxy_wstunnel

接下來,為 Guacamole 創建一個虛擬主機文件。

sudo nano /etc/apache2/sites-available/guacamole.conf

將以下行添加到文件中。交換 guacamole.example.com 使用您自己的域名。 請記住在 DNS 管理器中為您的子域創建 A 記錄。如果您沒有真實域名,我們建議您訪問 NameCheap 進行購買。它很便宜,並且為您的餘生免費提供 whois 隱私保護。

<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 https://localhost:8080/guacamole/ flushpackets=on
          ProxyPassReverse https://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>

保存並關閉文件。測試語法。

sudo apachectl -t

如果您對 Syntx 感到滿意,請啟用此虛擬主機。

sudo a2ensite guacamole.conf

重啟阿帕奇

sudo systemctl restart apache2

您現在可以通過以下方式訪問 Apache Guacamole 登錄頁面: guacamole.example.com.. 如果您看到“無效請求”或類似的錯誤消息,這可能意味著 Apache Tomcat 無法綁定到端口 8080,因為端口 8080 已被服務器上的另一個進程使用。我有。您需要配置其他進程以使用不同的端口重新啟動 Tomcat。

nginx

如果您使用 Nginx,請從默認的 Ubuntu 軟件存儲庫安裝 Nginx。

sudo apt install nginx

為 Guacamole 創建一個服務器塊文件。

sudo nano /etc/nginx/conf.d/guacamole.conf

將以下行添加到文件中。交換 guacamole.example.com 使用您自己的域名。 請記住在 DNS 管理器中為您的子域創建 A 記錄。如果您沒有真實域名,我們建議您訪問 NameCheap 進行購買。它很便宜,並且為您的餘生免費提供 whois 隱私保護。

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 https://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/ /;
        }

}

保存並關閉此文件。接下來,測試您的 Nginx 配置。

sudo nginx -t

如果測試成功,請重新加載 Nginx 以使更改生效。

sudo systemctl reload nginx

您現在可以通過以下方式訪問 Apache Guacamole 登錄頁面: guacamole.example.com.. 如果您看到“無效請求”或類似的錯誤消息,這可能意味著 Apache Tomcat 無法綁定到端口 8080,因為端口 8080 已被服務器上的另一個進程使用。我有。您需要配置其他進程以使用不同的端口重新啟動 Tomcat。

啟用 HTTPS

要在訪問 Guacamole Web 界面時加密 HTTP 流量,請安裝 Let’s Encrypt 頒發的免費 TLS 證書並啟用 HTTPS。通過運行以下命令在 Ubuntu 20.04 上安裝 Let’s Encrypt 客戶端 (certbot):

sudo apt install certbot

如果要使用 Apache,則需要安裝 Certbot Apache 插件。

sudo apt install python3-certbot-apache

然後運行以下命令來獲取並安裝 TLS 證書。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com

如果要使用 Nginx,還需要安裝 Certbot Nginx 插件。

sudo apt install python3-certbot-nginx

然後運行以下命令來獲取並安裝 TLS 證書。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com

在哪裡:

  • --nginx: 使用 nginx 插件。
  • --apache: 使用 Apache 插入。
  • --agree-tos: 我接受使用條款。
  • --redirect: 301 通過重定向強制 HTTPS。
  • --hsts:將 Strict-Transport-Security 標頭添加到所有 HTTP 響應。強制瀏覽器始終對域使用 TLS。 防止 SSL / TLS 剝離。
  • --staple-ocsp:啟用 OCSP 訂書釘。有效的 OCSP 響應被裝訂到 TLS 期間服務器提供的證書。

現在將自動獲取並安裝證書。

您可以通過 HTTPS 訪問 Guacamole Web 界面。 (https://guacamole.example.com)。

apacheguacamole 遠程桌面登錄頁面

登錄後,您將能夠使用遠程桌面。

gucamolexfce 遠程桌面

包起來

我們希望本教程能幫助您在 Apache Ubuntu 20.04 服務器上設置 Guacamole 遠程桌面。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。照顧好自己?