Linux通过VNC远程控制及实现浏览器远控
使用 VNC 及通过 noVNC 实现浏览器实现远程桌面访问
安装VNC服务
-
在需要被控制的机器上安装vnc服务
sudo apt update && sudo apt install x11vnc -y
-
初次运行
x11vnc
前需要设置远程访问的密码
x11vnc -storepasswd
-
上面密码设置后,保存在这个位置/home/jon/.vnc/passwd(具体以自己显示路径为准),需要把这个密码文件复制一份到/etc/x11vnc.pass这个路径,执行下面命令复制
sudo cp /home/jon/.vnc/passwd /etc/x11vnc.pass
-
设置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
- 启动vnc服务
#设置开机自启
sudo systemctl enable x11vnc
#启动x11vnc
sudo systemctl start x11vnc
#查看状态
sudo systemctl status x11vnc
到此已经可以通过vnc客户端连接了
通过noVNC实现浏览器远控
- 安装 noVNC
sudo apt install git -y
git clone https://github.com/novnc/noVNC.git
cd noVNC
git submodule update --init --recursive
- 安装 Websockify
noVNC 需要 Websockify 作为 WebSocket 到 TCP 之间的代理
sudo apt install python3-websockify -y
- 启动 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