在Ubuntu 22.04上安装Guacamole远程桌面的详细步骤

本文介绍在Ubuntu 22.04 Linux操作系统上安装Apache Guacamole远程桌面的详细步骤。Apache Guacamole是一个无客户端远程桌面网关,支持VNC、RDP和SSH等标准协议,一旦Guacamole安装在服务器上,您只需要一个web浏览器就可以访问桌面。Guacamole分为两部分:一是Guacamole服务器,它提供guacd代理和相关库,二是Guacamole客户端,它提供servlet容器所服务的客户端。

安装Guacamole远程桌面的详细步骤

步骤1:服务器准备

Apache Guacamole有许多依赖项,我们将在这一步中处理其中的大部分依赖项。让我们开始安装我们的Guacamole服务器和所需的每个依赖项。按如下命令安装它们:

sudo apt update

sudo apt install -y gcc nano vim curl wget g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev \

libavcodec-dev  libavformat-dev libavutil-dev libswscale-dev build-essential libpango1.0-dev libssh2-1-dev libvncserver-dev \

libtelnet-dev libpulse-dev libvorbis-dev libwebp-dev

接下来安装FreeRDP2:

我们将安装remmina PPA中托管的FreeRDP2版本,如下所示:

sudo add-apt-repository ppa:remmina-ppa-team/remmina-next-daily

sudo apt update

sudo apt install freerdp2-dev freerdp2-x11 -y

安装OpenSSL 1.1.l。这是因为最新的OpenSSL已经弃用了Guacamole仍然使用的一些功能。如果您的OpenSSL高于3.0.0,我们建议您卸载它,然后执行以下操作:

wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz -P ~

sudo tar -xzf openssl-1.1.1l.tar.gz

cd ~/openssl-1.1.1l

./config

make

sudo make install

sudo cp /usr/local/bin/openssl /usr/bin

sudo ldconfig

确认安装OpenSSL:

$ openssl version

OpenSSL 1.1.1l

这应该完成了Guacamole对我们的包和库的要求,现在我们应该开始安装它了。

步骤2:安装Apache Tomcat

在这一步中,我们将安装Apache Tomcat Java servlet容器,它将运行Guacamole Java war文件,从而为Guacamole Java客户端提供服务。因为它是Java的,所以我们必须首先安装Java:

sudo apt install openjdk-17-jdk -y

安装后,您可以检查安装的版本

$ java --version

openjdk 17.0.3

OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1)

OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)

1、创建Tomcat系统用户

建议使用系统中除root用户之外的用户运行应用程序。对于tomcat,我们将创建一个用于运行tomcat应用程序的用户。

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

2、获取Apache Tomcat

您可以从官方Tomcat下载页面获取Apache Tomcat二进制发行版。选写本文时,新的稳定版本是9.0.x:

VER="9.0.63"

wget https://downloads.apache.org/tomcat/tomcat-9/v${VER}/bin/apache-tomcat-${VER}.tar.gz -P ~

下载完成后,继续将tar文件解压缩到/opt/tomcat目录,如下所示:

sudo mkdir -p /opt/tomcat

sudo tar -xzf apache-tomcat-${VER}.tar.gz -C /opt/tomcat/

sudo mv /opt/tomcat/apache-tomcat-${VER} /opt/tomcat/tomcatapp

由于tomcat用户将运行Apache tomcat,因此我们必须授予它访问/opt/tomcat目录所需的权限。运行以下命令以实现此操作:

sudo chown -R tomcat: /opt/tomcat

然后使/opt/tomcat/tomcatapp/bin目录中的所有shell脚本都可执行:

sudo find /opt/tomcat/tomcatapp/bin/ -type f -iname "*.sh" -exec chmod +x {} \;

接下来,我们准备添加Tomcat的Systemd服务,这样我们就可以像服务器中的其他服务一样轻松地管理它的生命周期。要做到这一点,我们必须创建一个新文件,然后用正确的配置填充它,如下所示,运行的命令和内容如下:

$ sudo vim /etc/systemd/system/tomcat.service

[Unit]

Description=Tomcat 9 servlet container

After=network.target

[Service]

Type=forking

User=tomcat

Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"

Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/tomcatapp"

Environment="CATALINA_HOME=/opt/tomcat/tomcatapp"

Environment="CATALINA_PID=/opt/tomcat/tomcatapp/temp/tomcat.pid"

Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/tomcatapp/bin/startup.sh

ExecStop=/opt/tomcat/tomcatapp/bin/shutdown.sh

[Install]

WantedBy=multi-user.target

如您所见,我们的新systemd文件是干净的。保存它,然后重新加载守护程序,以便Systemd守护程序读取它:

sudo systemctl daemon-reload

然后启动服务:

sudo systemctl enable --now tomcat

运行如下命令:

$ systemctl status tomcat

返回信息大致如下:

tomcat.service - Tomcat 9 servlet container

Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)

Active: active (running)

默认情况下,Tomcat侦听端口8080,我们需要通过允许防火墙上的端口远程访问应用程序。如下所示:

sudo ufw allow 8080/tcp

步骤3:从源代码构建Guacamole服务器

guacamole服务器包含guacamole连接到远程桌面所需的所有本地服务器端组件。它提供了一个通用的C库libguac,所有其他本机组件都依赖它,以及每个受支持协议的独立库,以及一个代理守护程序guacd,Guacamole的核心。

以下是下载命令:

wget https://downloads.apache.org/guacamole/1.4.0/source/guacamole-server-1.4.0.tar.gz -P ~

下载后提取源tarball:

tar xzf ~/guacamole-server-1.4.0.tar.gz

更改为guacamole服务器源代码目录:

cd ~/guacamole-server-1.4.0

然后执行配置脚本,检查是否缺少任何必需的依赖项,并使Guacamole服务器适应您的系统:

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

上面的命令将导致大量的输出。当它结束时,您应该看到以下输出,该输出内容上具有yes:RDP、SSH、Telnet和VNC:

在Ubuntu 22.04上安装Guacamole远程桌面的详细步骤

之后,只需按照最后一条消息中的建议运行make命令:

make

给它一些时间,让它做它的事情。完成后,按如下步骤安装:

sudo make install

要完成这一切,请运行ldconfig命令创建必要的链接并缓存到guacamole服务器目录中找到的最新共享库:

sudo ldconfig

刷新systemd以查找安装在/etc/init.d/目录中的guacd(Guacamole代理守护程序)服务:

sudo systemctl daemon-reload

重新加载后,启动并启用guacd服务:

sudo systemctl start guacd

sudo systemctl enable guacd

请检查它的状态:

$ systemctl status guacd

在Ubuntu 22.04上安装Guacamole远程桌面的详细步骤

步骤4:安装Guacamole Web应用程序

设置Guacamole的推荐方法是将这些文件放置在标准位置,然后创建指向它们的符号链接,以便Tomcat能够找到它们。

guacamole客户端包含guacamole的所有Java和Maven组件(guacamole、guacamole common、guacamle ext和guacamole common js)。这些组件最终构成了web应用程序,它将为连接到服务器的用户提供HTML5 Guacamole客户端。此web应用程序将代表连接的用户连接到guacamole服务器的一部分guacd,以便为他们提供他们有权访问的任何远程桌面。

1、在Ubuntu 22.04 LTS上安装Guacamole客户端

Guacamole客户端提供二进制文件。要安装它,只需从如下所示的Guacamole二进制文件下载页面中取出它,将其复制到/etc/Guacamole/目录并同时重命名:

sudo mkdir /etc/guacamole

wget https://downloads.apache.org/guacamole/1.4.0/binary/guacamole-1.4.0.war -P ~

sudo mv ~/guacamole-1.4.0.war /etc/guacamole/guacamole.war

要安装Guacamole客户端二进制文件,请创建Guacamole客户端到Tomcat webapps目录的符号链接,如下所示:

sudo ln -s /etc/guacamole/guacamole.war /opt/tomcat/tomcatapp/webapps/

步骤5:配置Guacamole服务器

安装Guacamole服务器守护程序后,您需要定义Guacamole客户端如何连接到/etc/Guacamole/Guacamole下的Guacamole server(guacd)。属性配置文件。在此配置中,您需要简单地定义Guacamole服务器主机名、端口、用户映射配置文件和身份验证提供程序。

GUACAMOLE_HOME是GUACAMOLE配置目录的名称,默认位于/etc/GUACAMOLE。所有配置文件、扩展名等都位于该目录中。

创建GUACAMOLE_HOME环境变量:

echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat

echo "export GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/profile

创建/etc/guacamole/guacamole。属性配置文件和填充如下所示:

$ sudo vim /etc/guacamole/guacamole.properties

guacd-hostname: localhost

guacd-port:     4822

user-mapping:   /etc/guacamole/user-mapping.xml

auth-provider:   net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

在配置与上面一样之后,保存它并将Guacamole配置目录链接到Tomcatservlet目录,如下所示:

sudo ln -s /etc/guacamole /opt/tomcat/tomcatapp/.guacamole

sudo chown -R tomcat: /opt/tomcat

步骤6:设置Guacamole身份验证方法

Guacamole的默认身份验证方法从一个名为user-mapping.xml的文件中读取所有用户和连接。在此文件中,您需要定义允许访问Guacamole web UI的用户、要连接的服务器以及连接方法。

为要用于登录Guacamole web用户界面的用户生成密码的MD5哈希。相应地替换密码:

$ echo -n GoodStrongPassword | openssl md5

(stdin)= 2df81f5bfb14c621dbfd98e0d08c2f35

$ echo -n AdminStrongPassword | openssl md5

(stdin)= 53bdac1400db24248d8b6cf9fcf93dc6

当您的密码准备好后,使用下面所示的示例内容创建用户映射文件。它将添加两个用户。如果您有更多,请创建下面共享的另一个块。您可以根据环境放置任何主机名、用户名和主机,需要运行的命令和内容如下:

$ sudo vim /etc/guacamole/user-mapping.xml

<user-mapping>

    <!-- Per-user authentication and config information -->

    <!-- A user using md5 to hash the password

         guacadmin user and its md5 hashed password below is used to 

             login to Guacamole Web UI-->

    <!-- FIRST USER -->

    <authorize 

            username="GeeksAdmin"

            password="2df81f5bfb14c621dbfd98e0d08c2f35"

            encoding="md5">

        <!-- First authorized Remote connection -->

        <connection name="RHEL 7 Maipo">

            <protocol>ssh</protocol>

            <param name="hostname">172.25.169.26</param>

            <param name="port">22</param>

        </connection>

        <!-- Second authorized remote connection -->

        <connection name="Windows Server 2019">

            <protocol>rdp</protocol>

            <param name="hostname">10.10.10.5</param>

            <param name="port">3389</param>

            <param name="username">tech</param>

            <param name="ignore-cert">true</param>

        </connection>

    </authorize>

    <!-- SECOND USER -->

    <authorize 

            username="TechAdmin"

            password="53bdac1400db24248d8b6cf9fcf93dc6"

            encoding="md5">

        <!-- First authorized remote connection -->

        <connection name="Windows Server 2019">

            <protocol>rdp</protocol>

            <param name="hostname">10.10.10.5</param>

            <param name="port">3389</param>

            <param name="username">tech</param>

            <param name="ignore-cert">true</param>

        </connection>

        <!-- Second authorized Remote connection -->

        <connection name="RHEL 7 Maipo">

            <protocol>ssh</protocol>

            <param name="hostname">172.25.169.26</param>

            <param name="port">22</param>

        </connection>

    </authorize>

</user-mapping>

到目前为止,我们进展顺利。完成所有操作后,重新启动Tomcat和guacd以实现所做的更改:

sudo systemctl restart tomcat guacd

步骤7:访问Guacamole Web界面

到目前为止,我们已经做好了一切准备,因此我们应该准备好访问我们辛辛苦苦配置的应用程序。要访问Guacamole的web界面,只需将浏览器指向http://ip-or-domain-name:8080/guacamole,您应该会看到一个登录屏幕,如下所示:

在Ubuntu 22.04上安装Guacamole远程桌面的详细步骤

本例中的用户名可以是“GeeksAdmin或TechAdmin”,密码分别是“GoodStrongPassword或AdminStrongPassword”。

正如您所看到的,我们在配置文件中建立的连接,即服务器名称,在您登录时已经加载:

在Ubuntu 22.04上安装Guacamole远程桌面的详细步骤

只需单击您希望连接的一个,系统将提示您输入用户名和密码,无论是通过SSH还是RDP,具体取决于操作系统。如果凭据正确,则应允许您进入服务器。

至此,在Ubuntu 22.04系统上安装Guacamole全部完成,此步骤过程也供给任何一款Linux服务器参考。

栏目相关文章