Guacamole: 在浏览器中访问远程桌面环境

之前记录了如何在VPS(Ubuntu/Debian)上安装桌面环境,并使用Windows中自带的远程桌面进行连接,这次我们使用guacamole,让你在浏览器中就可以方便的操作远程桌面。这种方案同样支持音频输出,并且连接速度也很不错。本篇文章以 Debian11 为例安装。

与上篇文章中所描述的兼容性相同,Debian11 依旧无法使用 Gnome 桌面,rdp 会无法连接

项目地址:

Server端

Client端

一、安装和配置Guacamole

1.1 准备工作

首先需要根据如何在VPS(Ubuntu/Debian)上安装桌面环境安装好桌面环境,再进行下一步

在前面的配置没问题的情况下,继续安装依赖

sudo apt update -y && sudo apt install build-essential freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl -y

接下来安装 tomcat,这是 Guacamole web 所必须要的

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

启动 tomcat

sudo systemctl enable --now tomcat9

确保启动成功

sudo systemctl status tomcat9

应该看到

tomcat正常启动

1.2 编译Guacamole-server

进入编译目录

cd /usr/src

进入官网下载源代码,例如

wget https://dlcdn.apache.org/guacamole/1.5.0/source/guacamole-server-1.5.0.tar.gz

解压并进入

tar -xzvf guacamole-server-1.5.0.tar.gz
cd guacamole-server-*/

准备编译

./configure --with-systemd-dir=/etc/systemd/system/

会看到

编译并安装

make && make install

应用系统库的更改

sudo ldconfig

1.3 配置Guacamole-server

创建并配置目录

mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9

创建配置

sudo nano /etc/guacamole/guacamole.properties

写入

guacd-hostname: localhost
guacd-port:     4822

# user mapping and user connections
user-mapping:    /etc/guacamole/user-mapping.xml

这里没有特殊需求不需要更改上面的配置

创建日志记录配置

sudo nano /etc/guacamole/logback.xml

写入

<configuration>

    <!-- Appender for debugging -->
    <appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Log at DEBUG level -->
    <root level="debug">
        <appender-ref ref="GUAC-DEBUG"/>
    </root>

</configuration>

计算你的登录密码的md5值

echo -n YOUR_PWD | openssl md5

这里将 YOUR_PWD 替换为你想设置的密码

执行后应该会看到

(stdin)= eb5bc39f61728a5f035be01d6039220a

(stdin)= 之后的一串就是md5值,例如 eb5bc39f61728a5f035be01d6039220a

创建登录配置

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

写入

<user-mapping>

    <!-- Another user, but using md5 to hash the password
         (example below uses the md5 hash of "PASSWORD") -->
    <authorize
            username="YOUR_USR"
            password="YOUR_PWD_MD5"
            encoding="md5">

        <!-- First authorized connection -->
        <connection name="SSH localhost">
            <protocol>ssh</protocol>
            <param name="hostname">localhost</param>
            <param name="port">22</param>
            <param name="username">YOUR_SSH_USR</param>
            <param name="password">YOUR_SSH_PWD</param>
        </connection>

        <!-- Second authorized connection -->
        <connection name="RDP localhost">
            <protocol>rdp</protocol>
            <param name="hostname">localhost</param>
            <param name="port">3389</param>
            <param name="username">YOUR_RDP_USR</param>
            <param name="password">YOUR_RDP_PWD</param>
        </connection>

    </authorize>

</user-mapping>

上面这段配置中包含

YOUR_USR 更改为你登录guacamole的用户名

YOUR_PWD_MD5 更改为你登录 guacamole 的密码的 md5 值,即上面计算出来的那一串

下面的配置是 guacamole 进行连接时使用的信息,这里我只添加了 ssh 和 rdp,在相应的位置改成你的用户名和密码就好了

1.4 安装Guacamole-client

同样去官网下载,这次直接下载打包好的文件,但注意 client 的版本要与 server 对应,例如

cd /usr/src && wget https://dlcdn.apache.org/guacamole/1.5.0/binary/guacamole-1.5.0.war

然后

sudo cp guacamole-1.5.0.war /var/lib/tomcat9/webapps/guacamole.war

重启 tomcat 并启动 guacd

sudo ldconfig
sudo systemctl restart tomcat9
sudo systemctl enable --now guacd

确保正常启动

sudo systemctl status guacd

应该看到

guacd正常启动

此时访问 IP:8080/guacamole 就可以看到登录界面了

guacamole登录

二、常见问题解决

2.1 RDP无法连接

如果按照上面的操作,如果不出意外的话,ssh 登录应该是没问题的,但是 rdp 会报错,说登录失败

RDP server closed/refused connection: Security negotiation failed (wrong security type?)
guacd[133877]: INFO:#011RDP server closed/refused connection: Security negotiation failed (wrong security type?)

这是因为 guacd 在以 daemon 身份运行,就会出现这个问题,我们为guacd新建一个账户并运行就可以了

useradd -M -d /var/lib/guacd/ -r -s /sbin/nologin -c "Guacd User" guacd
mkdir /var/lib/guacd
chown -R guacd: /var/lib/guacd
sed -i 's/daemon/guacd/' /etc/systemd/system/guacd.service
systemctl daemon-reload
systemctl restart guacd

这样一来,rdp 就应该可以正常工作了。

但如果出现的是下面问题的话

Debian11+gnome桌面无法使用

那就是 Debian11 + Gnome桌面真的用不了 rdp,放弃吧。

2.2 其他问题

如果前面的操作有误的话,最大的可能是连接时看到这个错误

常见的guacmole错误

这时需要通过日志来判断问题所在,一般在下面两个地方可以看到

tail -f /var/log/syslog
sudo systemctl status guacd

如果这里给出了错误,那么就按照报错进行修正,如果都没有报错信息的话,也有可能是前面的配置文件中某一项的值不对,还得从头仔细检查

三、使用体验

登录后就会看到之前配置过的连接

guacmole主页

在线ssh功能

在线ssh

不得不说,这个在线 ssh 功能做的太简陋了,远不如很多 webssh 好用,但是 rdp 还是不错的,在浏览器中访问远程桌面环境的体验良好,可以做到音画同步且无卡顿,看个视频还是没有问题的。

在线远程xfce桌面
在线远程kde桌面
在线远程操作浏览器

四、参考文章

-=||=-收藏
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇