本教程展示瞭如何在 Ubuntu 20.04 服務器上設置鱷梨醬遠程桌面。 Guacamole 是一個免費的開源遠程桌面網關,由 Apache 軟件基金會提供支持。

鱷梨醬的特點

  • 您可以從 Web 瀏覽器訪問遠程桌面。客戶端不需要安裝任何額外的軟件。
  • 支持VNC、RDP、SSH、Kubernetes等標準協議。
  • VNC 會話可以以圖形方式記錄。
  • 使用 CAS、OpenID Connect 或 SAML 2.0 進行單點登錄
  • 局域網喚醒
  • 輕鬆管理多個遠程桌面會話。
  • 支持 TOTP 雙重身份驗證。
  • 支持通過剪貼板(複製和粘貼)和 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

第 3 步:配置鱷梨醬

為 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

第 4 步:在 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 的 TigerVNC 服務器。

sudo apt install tigervnc-standalone-server

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

vncserver

首次啟動 TigerVNC 時,系統會要求您設置 VNC 密碼。確保密碼不超過 8 個字符。然後您可以選擇是否僅顯示密碼。

鱷梨醬tightvncserver密碼ubuntu 20.04

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

sudo systemctl restart tomcat9 guacd

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

  • ~/.Xauthirty
  • ~/.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

ubuntu 20.04 Tiger vncserver 監聽端口

第 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,因為它已被服務器上的另一個進程使用。您需要配置其他進程以使用不同的端口並重新啟動 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,因為它已被服務器上的另一個進程使用。您需要配置其他進程以使用不同的端口並重新啟動 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:強制 HTTPS 超過 301 重定向。
  • --hsts:將 Strict-Transport-Security 標頭添加到所有 HTTP 響應。強制瀏覽器始終對域使用 TLS。 防禦 SSL/TLS 剝離。
  • --staple-ocsp:啟用 OCSP 裝訂。有效的 OCSP 響應被裝訂到 TLS 期間服務器提供的證書。

將自動獲取並安裝證書。

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

Apache guacamole 遠程桌面登錄頁面

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

gucamole xfce 遠程桌面

包起來

我們希望本教程可以幫助您在 Apache Ubuntu 20.04 服務器上設置 Guacamole 遠程桌面。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。照顧好自己?