IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Proxmox VE vncproxy noVNC 配置备忘录

    YY.K发表于 2024-11-12 17:38:37
    love 0

    前期准备

    GET /api2/json/access/ticket
    POST /api2/json/nodes/{node}/qemu/{vmid}/vncproxy
    wss /api2/json/nodes/{node}/qemu/{vmid}/vncwebsocket

     vncproxy 和 ticket 需要一起创建,noVNC连接vncwebsocket 需要 PVEAuthCookie才能正常通信否则无法连接。

    注意:请求/api2/json/access/ticket必须要用户密码获取,用root token无法创建。
    PVE 的设计思路是将 VM 分配给用户,但是没给token设计获取 ticket 应该是考虑权限分离。

     

    github The-Network-Crew的解决路子是直接用 root创建PVEAuthCookie, 虽然没有CSRFPreventionToken但不知道是否会有泄露权限的风险

    https://github.com/The-Network-Crew/Proxmox-VE-for-WHMCS/blob/master/modules/servers/pvewhmcs/pvewhmcs.php

    ConvoyPanel的解决思路是直接搞了个coterm来封装

    nginx 配置

    location / websocket / {
    #add_header Strict - Transport - Security "max-age=31536000; includeSubDomains"always;
        proxy_read_timeout 360;
        proxy_connect_timeout 60;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_cache_bypass $http_upgrade;
        proxy_set_header Cookie "PVEAuthCookie=$arg_pveticket";
        proxy_ssl_verify off;
        proxy_set_header Host $arg_host: $arg_port1;
        proxy_pass https: //$arg_host:$arg_port1/api2/json/nodes/$arg_node/$arg_type/$arg_vmid/vncwebsocket?port=$arg_vncport&vncticket=$arg_vncticket;
    }

    url传入数据websocket/?host=XXXX&port1=8006&node=xxx&type=qemu&vmid=xxxx&vncport=xxxx&vncticket= xxxx&pveticket

     

    另外一种方式可以直接用 cookie 方式传入,在程序内直接对客户端写入 cookie

    把nginx 从GET的$arg_ 参数换成 $cookie_获取。



沪ICP备19023445号-2号
友情链接