本教程將向您展示如何在 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
第 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
如果其他軟件正在監聽 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 個字符。然後您可以選擇是否只顯示密碼。
現在你需要編輯 /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 服務器失敗如下:
然後您可以手動創建文件。
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]
如您所見,它處於活動狀態。
TigerVNC 服務器現在正在偵聽端口 5901。
sudo ss -lnpt | grep vnc
第 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)。
登錄後,您將能夠使用遠程桌面。
包起來
我們希望本教程能幫助您在 Apache Ubuntu 20.04 服務器上設置 Guacamole 遠程桌面。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。照顧好自己?