noVNC与websockify分离连接到QEMU/KVM
使用noVNC远程连接KVM默认是一对一的,这样就需要为每台虚拟机都架一个代理,资源消耗巨大,这显然不太实用,所以这里我们使用一个专门的代理机来做转发,代理多台虚拟机。
一、节点关系
宿主机:192.168.1.1
客户机(target):共用宿主机IP
代理机:192.168.1.2 安装websockify
测试机:192.168.1.3
二、客户机设置
执行以下命令修改配置文件,添加一个 graphics
virsh edit target
三、宿主机设置
修改 /etc/libvirt/qemu.conf 配置文件,取消vnc_listen = “0.0.0.0”注释
vi /etc/libvirt/qemu.conf
获取客户机端口号
virsh vncdisplay target
自动分配的 VNC 端口(自增)默认从 5900 开始,如得到0,则客户机端口号为5900
关闭防火墙
四、代理机设置
安装websockify
git clone https://github.com/novnc/websockify.git
在websockify目录新建token文件夹,在其下编写token.conf配置文件
配置文件内容:
target: 192.168.1.1:5900
target2: 192.168.1.1:5901
token:宿主机ip:(空格)对应客户机VNC端口
注意token: 后必须有空格
在websockify目录执行以下命令启动代理(需先安装python3)
./run --token-plugin TokenFile --token-source ./token/ 6080
关闭防火墙
五、测试机设置
拉取noVNC
git clone https://github.com/novnc/noVNC.git
使用服务启动vnc.html,在地址栏末尾添加如下参数测试(或在左侧noVNC工具栏设置),如果要连接其他客户机(虚拟机),只需要在token.conf中配置,通过改变url中的token参数即可
?host=192.168.1.2&port=6080&path=websockify/?token=target
六、连接加密
websockify启动时添加–cert 加密证书 –key 密钥
此时还可不加密访问,加 –ssl-only可以禁止此行为
./run --token-plugin TokenFile --token-source ./token/ 6080 --cert /root/server.crt --key /root/server.key
测试机将CA证书安装到受信任的根证书,重启生效
访问时勾选左侧工具栏加密。
自签证书访问时会显示不安全,若有域名建议申请第三方机构颁发证书