使用 VNC 及通过 noVNC 实现浏览器实现远程桌面访问

安装VNC服务

  1. 在需要被控制的机器上安装vnc服务
    sudo apt update && sudo apt install x11vnc -y

  2. 初次运行 x11vnc 前需要设置远程访问的密码
    x11vnc -storepasswd

  3. 上面密码设置后,保存在这个位置/home/jon/.vnc/passwd(具体以自己显示路径为准),需要把这个密码文件复制一份到/etc/x11vnc.pass这个路径,执行下面命令复制
    sudo cp /home/jon/.vnc/passwd /etc/x11vnc.pass

  4. 设置x11vnc开机启动,创建系统服务文件
    sudo vim /lib/systemd/system/x11vnc.service
    填入以下内容

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target
  1. 启动vnc服务
#设置开机自启
sudo systemctl enable x11vnc

#启动x11vnc
sudo systemctl start x11vnc

#查看状态
sudo systemctl status x11vnc

到此已经可以通过vnc客户端连接了

通过noVNC实现浏览器远控

  1. 安装 noVNC
sudo apt install git -y
git clone https://github.com/novnc/noVNC.git
cd noVNC
git submodule update --init --recursive
  1. 安装 Websockify
    noVNC 需要 Websockify 作为 WebSocket 到 TCP 之间的代理
sudo apt install python3-websockify -y
  1. 启动 noVNC
    切换到 noVNC 目录并启动 Websockify。默认情况下,noVNC 将在端口 6080 上运行。
./utils/novnc_proxy --vnc localhost:5900

小插曲

启动noVNC后,尝试通过浏览器远程控制,发现连不上,一方面是防火墙没放行对应端口,另一方面发现noVNC日志提示以下信息
code 400, message Client must support 'binary' or 'base64' protocol

解决办法
切换到 noVNC 目录,编辑./core/websock.js文件,
找到
this.attach(new WebSocket(uri, protocols));
修改为
this.attach(new WebSocket(uri, ['binary', 'base64']));
重启noVNC服务即可。

参考链接:
https://programtree.blog.csdn.net/article/details/139996176
https://blog.csdn.net/LT15171009269/article/details/139412307
https://blog.csdn.net/u014374009/article/details/131780035