java实现远程桌面_?启迪云技术栈

2023-10-27

Openstack面板或命令行提供两种方式来对客户虚拟机进行远程桌面访问,VNC控制台和SPICE HTML5。

VNC控制台

Openstack提供一个组件nova-novncproxy,它允许用户通过浏览器或vnc客户端来访问虚拟机。

通常,通过websocket来访问虚拟时,VNC控制台工作步骤如下:

1. 用户通过VNC控制台发送一个URL请求,URL的格式是:http://ip:port/?token=xxx,该地址实际上就是VNC控制台代理的地址;

2. Openstack获取URL地址,通过nova API发送消息给compute节点;

3. Compute节点libvert driver获取到vnc 链接的消息;

4. 同时Nova API发送认证请求给nova-consoleauth来验证token;

5. VNC proxy与nova-consoleauth交互来验证token,并将token映射到虚拟机所在的宿主机的IP地址和某个端口,该端口就是虚拟机启动时所监听的端口;

6.Compute通过nova.conf文件选项vncserver_proxyclient_address指定代理用于连接的地址;

7. VNC proxy与虚拟机所在的宿主机的vncserver建立连接,并开始代理,直到浏览器session结束。

Openstack实现VNC控制台远程访问虚拟机的实现方法可以概括如下:

通常情况下,为了提供完整的VNC功能,openstack服务器需要部署三个服务:

· nova-consoleauth: 提供token验证,维护token与ip地址、端口号的映射。通常部署在控制节点上。

· nova-novncproxy: 支持基于浏览器的noVNC 客户端,通常与nova-api部署在一起,它作为公共网络和专用计算主机网络之间的代理运行。

· nova-xvpvncproxy: 支持基于java的vnc客户端,,通常与nova-api部署在一起,它作为公共网络和专用计算主机网络之间的代理运行。

此外还需要对compute节点进行适当的配置。在nova.conf文件中配置如下内容:

· vnc_enabled=True 启用虚拟机的vnc功能。

· vncserver_listen=0.0.0.0 默认是127.0.0.1,即只可以从本机进行访问,通常情况下是配置为管理网的IP地址。设置为0.0.0.0主要是考虑到虚拟机热迁移时,目的宿主机没有相应的IP地址,热迁移会失败。

· vncserver_proxyclient_address=127.0.0.1 该地址指明vnc proxy应该通过那个IP地址来连接vncserver,通常是管理网IP地址。

· novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html 指定VNC控制台代理的地址,通过这个地址连接到vncserver。

· xvpvncproxy_base_url=http://127.0.0.1:6081/console 指定nova xvp VNC控制台代理的地址。

计算节点在nova.conf文件中,通过vncserver_proxyclient_address参数指定vncserver的监听地址及vnc proxy应该通过哪个地址连接到vncserver。vnc proxy充当了公网和计算节点之间的桥梁。

另外,对于vnc proxy的配置则相对简单,只需要设置其监听的主机和端口即可。具体如下:

· novncproxy_host=$SERVICE_HOST 通常为宿主机的管理网IP。

· novncproxy_host=6080 vnc控制台访问的地址端口

· xvpvncproxy_host=$SERVICE_HOST 通常为宿主机的管理网IP。

· xvpvncproxy_port=6081 xvp vnc控制台访问的地址端口

完成以上配置后,openstack服务器在启动一个虚拟机时, kvm将vnc的参数加到虚拟机实例对应的libvirt文件中(/etc/libvirt/qemu/instance***.xml),此虚拟机启动完成后将支持VNC控制台的访问。

SPICE HTML5

OpenStack计算机支持向用户提供VNC控制台来远程访问虚拟机,但是VNC协议的使用也是受限的,缺乏对多显示器、双向音频、可靠的剪切和粘贴、视频流等的支持。SPICE是一种新的协议,旨在解决VNC中的限制,并提供良好的远程桌面支持。

SPICE协议支持共享了一个与VNC类似的实现结构。OpenStack面板在其控制台选项卡中使用一个SPICE-HTML5小部件,通过使用SPICE–over-websockets与nova-spicehtml5proxy服务通信,nova-spicehtml5proxy服务通过使用SPICE直接与hypervisor进程通信。

SPICE控制台的访问实现配置必须显式禁用VNC。在[DEFAULT]部分将vnc_enabled选项设置为False,以禁用VNC控制台。然后配置spice的相关参数如下:

[spice]

agent_enabled = False

enabled = True

html5proxy_base_url = http://IP_ADDRESS:6082/spice_auto.html

html5proxy_host = 0.0.0.0

html5proxy_port = 6082

keymap = en-us

server_listen = 127.0.0.1

server_proxyclient_address = 127.0.0.1

以上参数的含义与vnc配置类似,不再详述。

安全的VNC访问

默认的VNC服务器访问不使用任何形式的身份验证。 在前面的示例中,任何用户都可以从网络上的任何主机连接和查看虚拟机的VNC会话。这样的话就会存在安全漏洞:

Nessus扫描漏洞:vnc server unauthenticated access。对此,我们可以将多种安全级别应用于VNC客户端/服务器连接。其中包含两种身份验证类型:SASL和单密码身份验证,以及使用密码保护的x509证书认证。

Ø 使用单密码的身份认证

这种配置比较简单,直接修改虚拟机对应的xml配置文件,添加passwd属性即可。

Ø 使用SASL的用户名和密码认证

SASL(Simple Authentication and Security Layer)提供用户名和密码身份验证以及数据加密(默认情况下为digest-md5)。要配置SASL身份验证,请执行以下操作:

1. 更改/etc/libvirt/libvirtd.conf中的配置,如下所示:

A.启用TCP连接支持SASL:

auth_tcp = "sasl"

B.启用TLS/SSL连接SASL:

auth_tls = "sasl"

2. 重启libvertd

rclibvirtd restart

3. Libvirt关于SASL配置文件位于/etc/sasl2/libvirtd.conf。 通常,无需更改默认值。 但是,如果在TLS之上使用SASL,则可以通过注释mech_list来关闭会话加密以避免额外开销 - TLS连接已加密。 对于TCP连接,此参数必须设置为digest-md5:

mech_list: digest-md5 # mandatory for TCP connections

#mech_list: digest-md5 # apply default (username+password) TLS/SSL only!

4. 由于SASL维护自己的用户数据库,默认情况下如果未配置任何SASL用户,则无法进行登录。可以使用以下命令添加,列出和删除用户:

mercury:~ # saslpasswd2 -a libvirt tux # add user tux

Password:

Again (for verification):

mercury:~ # sasldblistusers2 -f /etc/libvirt/passwd.db # list users

tux@mercury.example.com: userPassword

mercury:~ # saslpasswd2 -a libvirt -d tux # delete user tux

Ø 使用x509证书认证

此方法是在VNC服务器上启用TLS(Transport Layer Security)加密。这要求VNC客户端可以访问x509客户端证书,通过限制对这些证书的访问,可以在客户端间接控制访问。具体实现步骤如下:

首先,生成x509客户端/服务器正确(这里不详细介绍,请自行搜索)。下面,我们假设服务器x509证书分布在服务器的以下位置:

/etc/pki/CA/cacert.pem

/etc/pki/libvirt/servercert.pem

/etc/pki/libvirt/private/serverkey.pem

而客户端的证书分布在客户端的以下位置:

/etc/pki/CA/cacert.pem

/etc/pki/libvirt-vnc/clientcert.pem

/etc/pki/libvirt-vnc/private/clientkey.pem

证书到位后,可以为libvirt启用TLS支持。

对于VM Host Server,需要进行如下配置:

1. 默认情况下,libvirt使用TCP端口16514接受安全的TLS连接。 在防火墙中打开此端口。

2. 编辑/etc/libvirt/libvirtd.conf,设置listen_tls=1;

3. 创建目录/ etc / pki / libvirt-vnc并将证书链接到此目录

mkdir -p /etc/pki/libvirt-vnc && cd /etc/pki/libvirt-vnc

ln -s /etc/pki/CA/cacert.pem ca-cert.pem

ln -s /etc/pki/libvirt/servercert.pem server-cert.pem

ln -s /etc/pki/libvirt/private/serverkey.pem server-key.pem

4. 编辑/etc/libvirt/qemu.conf,设置以下参数:

vnc_listen = "0.0.0.0"

vnc_tls = 1

vnc_tls_x509_verify = 1

5、重启libvirt

rclibvirtd restart

最后,测试客户端/服务器的设置是否正确:

virsh -c qemu+tls://mercury.example.com/system list –all

将mercury.example.com替换为虚拟机所在主机的hostname

如果配置正确,你将看到虚拟机所在host主机上注册了libvirt的所有虚拟机实例列表。

访问权限控制

每个x509证书都由两部分组成:公共证书和私钥。 客户端需要使用两个部分进行身份验证。 因此,对客户端证书及其私钥具有读访问权限的任何用户都可以访问虚拟主机。 另一方面,配备完整服务器证书的任意机器可以伪装成VM主机服务器。因此需要尽可能地控制对密钥文件的访问来限制访问权限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java实现远程桌面_?启迪云技术栈 的相关文章

  • 一键开启mysql的审计功能(无需安装插件)

    本文所使用数据库为mysql8 0 5 x版本的mysql上没试过一下步骤调用审计功能 无需下载任何插件 两行命令就能搞定 一 首先查看审计配置情况 show global variables like log timestamps sho
  • Spring Boot 笔记 - 注解(四)-- @SpringBootApplication

    Many Spring Boot developers like their apps to use auto configuration component scan and be able to define extra configu
  • 二、Java代码实现冒泡排序

    冒泡排序描述 关键 相邻的两个元素进行比较 依次比较数组中相邻两个元素大小 若 a j gt a j 1 则交换两个元素 两两都比较一遍 就是一轮冒泡 结果是一轮冒泡后最大的元素排到了最后 重复以上的步骤 直到整个数组有序就行了 冒泡的优化
  • 字典序算法详解

    一 字典序 字典序 就是按照字典中出现的先后顺序进行排序 1 单个字符 在计算机中 25个字母以及数字字符 字典排序如下 0 lt 1 lt 2 lt lt 9 lt a lt b lt lt z 比如在 python 中 0 lt 9 l
  • R语言初学者必备的10个实用函数

    R语言初学者必备的10个实用函数 R语言是一种流行的数据分析和统计建模工具 它提供了丰富的函数和库来处理和分析数据 对于初学者来说 掌握一些常用的实用函数将使他们更加高效地使用R语言进行数据处理和可视化 本文将介绍10个初学者必备的实用函数
  • CPU上下文切换

    文章目录 CPU上下文切换 什么是CPU上下文 进程上下文切换 特权模式切换 进程上下文切换与系统调用的区别 什么时候会切换进程上下文 线程上下文切换 中断上下文切换 监控上下文切换 vmstat pidstat 减少上下文切换 CPU上下
  • 生命在于学习——网站Getshell的方法

    PS 本篇文章仅用于学习笔记记录 不可用于其他用途 一 通用getshell方法 1 任意文件上传 1 注意编程语言 asp aspx php jsp 2 上传成功 但是访问直接下载文件 以文本展示 原因 文件没有被解析 3 上传成功 蚁剑
  • Burp Suite软件常用模块

    目录 1 Proxy 代理模块 2 Repeater模块 请求重放 3 Intruder模块 入侵自动化攻击 Intruder的4种攻击模式 1 Sniper模式 狙击手模式 2 Battering ram模式 攻城锤模式
  • 解决HC05蓝牙模块主从配对失败及AT模式设置方案

    解决HC05蓝牙模块主从配对失败及AT模式设置方案 原创文章 转载请注明 本文为电脑端配置 关于连线 关于串口调试工具 关于AT指令与蓝牙模块配对 关于测试验证 原创文章 转载请注明 本文为电脑端配置 最近在做一个开源的Vorpal Hex
  • HBase拆分策略

    转载自 http blog javachen com 2014 01 16 hbase region split policy html Region 概念 Region是表获取和分布的基本元素 由每个列族的一个Store组成 对象层级图如
  • 图像相关算法整理

    图像相关算法整理 1 HE算法 灰度直方图均衡算法 原理 将原始图像的灰度直方图从比较集中地某个灰度区间变成全部灰度范围内的均匀分布 步骤 1 遍历每一帧图像中的所有像素 记录每个灰度值出现的像素个数 2 统计每个灰度值占总像素的百分比 即
  • C语言占位符 格式占位符

    常用占位符 d i 代表整数 f 浮点数 s 字符串 c char p 指针 fL 长log e 科学计数法 g 小数或科学计数法 C语言中的格式占位符 a A 读入一个浮点值 仅C99有效 c 读入一个字符 d 读入十进制整数 i 读入十
  • Dev-C++使用教程,将你编写第一个C语言代码,实现输出Hello world

    安装好Dev C 软件 方法 步骤 1 打开安装好的Dev C 软件 初始界面如下 2 然后选择左上角文件 依次选择新建 gt 源代码 或者使用快捷键ctrl n 新建一个项目 就可以编写代码了 3 这里以输出Hello world 为例
  • java基础

    java命名规范 驼峰命名 见名知意 1 项目名全部小写 2 包名全部小写 以域名开头 3 类名首字母大写 如果类名由多个单词组成 每个单词的首字母都要大写 如 public class MyFirstClass 4 变量名 方法名首字母小
  • Learning to Navigate in Cities Without a Map 理解

    问题定义 在真实世界中进行无定位辅助 类似于人直觉长距离导航 输入为当前的视觉输入和目标地点 输出就是接下来应该怎么走 才能到达目的地 PS Navigation相比于planning来说更加粗糙 就是不需要具体到某个地点 而是一个大概的方
  • 06黑马数据结构笔记之栈的链式存储(简单)

    06黑马数据结构笔记之栈的链式存储 简单 1 思想 同样以挂钩的方式存储数据 但栈的链式存储与上一篇顺序存储有点区别 顺序存储在数组的尾部满足先进后出 所以每次对栈顶即数组尾部进行插入删除就可以满足 而栈的链式存储在链表的头满足先进后出 所
  • 中国矿业大学徐海学院最不常见的网络工程计算机毕业设计题目推荐50例

    之前有矿业大学徐海学院的童鞋在后台找我们 最近要准备毕业设计了 不会选题 希望可以帮忙给一些毕业设计题目 我整整花了一周把之前做的答辩通过的毕业设计成品进行整理 并精选一些容易实现且不会刷下来的题目列举下 网络工程毕业设计题目推荐1 10题
  • 错误记录:Invalid bound statement (not found)

    场景 在跟随某课程学习 SpringBoot 使用 Mybatis 时出现该错误 查阅各种博客 基本上都说是某个参数配置错误 但仔细检查后 并没有发现任何错误 解决方法 后面偶然间发现某位博主的文件存放路径与视频课程中不同 尝试将 xml
  • mybatis mysql 乐观锁_MyBatis实现乐观锁和悲观锁

    使用mysql做数据库 mybatis做orm的系统中 mybatis的乐观锁和悲观锁实际上就是mysql的乐观锁和悲观锁 实例中使用springboot整合mybatis 一并记录了 添加依赖 mysql mysql connector

随机推荐

  • Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录

    前言 大家早好 午好 晚好吖 欢迎光临本文章 今天来分享一下如何使用Python突破某网游游戏JS加密限制 进行逆向解密 实现自动登录 逆向目标 目标 某 7 网游登录 主页 aHR0cHM6Ly93d3cuMzcuY29tLw 接口 aH
  • vscode炫酷写代码插件Power Mode

    老规矩先看下效果 第一 扩展栏搜索 Power Mode 安装 安装完了别忘了重启 第二 文件 gt 首选项 gt 设置 gt 点击在setting json中编辑 powermode enabled true 是否开启 powermode
  • 爱线段树的好孩子[POI2014]KAR-Cards

    There are nn cards arranged on a table in a certain order Two integers are written on each card one per side the obverse
  • 解决cannot remove ''Operation not permitted

    删除某文件出现cannot remove XXX Operation not permitted lsattr 查看隐藏属性 root iZ2zehlrwqqmoadnuv8ts7Z home wwwroo wwwroot default
  • verilog中#是什么意思?#有什么作用?

    在使用verilog语言进行硬件描述时 你是否也经常用到 这个符号 那么你是否关心过这个符号到底是什么意思呢 它的作用是什么呢 1 可用作参数的传递 我们在进行verilog编程时经常会遇到如下一样的代码块 module study tes
  • -bash: zkServer.sh: command not found

    解决办法 zkServer sh start
  • qt 旋转子窗口 基于QGraphicsView 实现

    感谢 Qt 示例里边的 Box 示例 上图 不要被吓哭哦 X轴旋转 XY轴一起旋转 XYZ轴一起旋转 YZ轴一起旋转 Y轴旋转 XZ轴一起旋转 Z轴旋转 GIF的图有点略多 大家谅解谅解 上代码 http pan baidu com s 1
  • 学习注意力机制【1】

    目录 注意力机制介绍 自注意力机制三个步骤 1 计算注意力分数 Attention Scores 2 计算注意力权重 Attention Weights 3 得到加权和 Weighted Sum 自注意力机制Q K V 注意力机制介绍 At
  • 【JavaWeb】视频播放/下载

    如题 最近和同事联调接口时 收到反馈 ios低版本的视频播放不了 经网上查找其他大佬的解决方案修改 解决了该问题 话不多说 直接上代码 public static void downShowVideo HttpServletRequest
  • Python GUI案例之看图猜成语开发(第三篇)

    Python GUI案例之看图猜成语 第三篇 前言 看图猜成语小程序开发 第三篇 游戏闯关模式页面 Python GUI案例之看图猜成语开发 第一篇 Python GUI案例之看图猜成语开发 第二篇 Python GUI案例之看图猜成语开发
  • 中国“互联网+”大学生创新创业大赛“的实施方案及评审规则

    目录 前言 一 总体要求 一 指导思想 二 基本要求 三 总体目标 二 主要任务和措施 一 提升师资水平 1 增强教师创新创业教育的意识和能力 2 鼓励教师开设创新创业课程和指导创新创业实践 3 鼓励教师创新教学及考核方法 4 吸引校外师资
  • 开源跨平台跨硬件3D打印机

    1 HPGL 文档
  • DWD层 (用户行为日志)

    数仓搭建 DWD层 1 对用户行为数据解析 2 对业务数据采用维度模型重新建模 文章目录 日志解析思路 get json object函数使用 启动日志表 页面日志表 动作日志表 曝光日志表 错误日志表 DWD层用户行为数据加载脚本 日志解
  • Firefly-RK3399安装环境

    文章目录 Firefly RK3399 配置ubuntu环境以及安装Qt PCL OPENcv VTK 一 刷写ubuntu16 04系统 windows下 二 安装Qt Firefly RK3399 三 安装opencv pcl vtk
  • BUUCTF[knife]

    点击题目链接 发现是一句话木马 一句话木马 利用文件上传漏洞 往目标网站上上传木马 即可通过中国蚁剑或中国菜刀获取和控制整个网站主机目录 但很容易被网站防火墙waf拦截 想绕过waf需对木马进行变形 eval 函数 把括号内的字符串 须是合
  • ldconfig命令

    ldconfig命令 动态链接器的管理命令 依次搜索相关目录的动态链接库 lib so 创建动态链接装载程序 ld so或ld linux so 所需的链接和缓存文件 缓存文件 一般是 etc ld so cache 主要记录了动态链接库的
  • list元素

    列表元素 列表元素分为有序列表和无序列表 有序列表 ol order list 有序列表 li list item 列表元素 ol type 1 li 有序列表1 li li 有序列表2 li li 有序列表3 li ol 属性 type
  • [Leetcode] 414. 第三大的数

    题目描述 给定一个非空数组 返回此数组中第三大的数 如果不存在 则返回数组中最大的数 要求算法时间复杂度必须是O n 示例 1 输入 3 2 1 输出 1 解释 第三大的数是 1 示例 2 输入 1 2 输出 2 解释 第三大的数不存在 所
  • 发现一款好用的在线项目管理工具(有免费版)

    注 本文转载自网络 在线项目管理工具指的是不用安装服务器的云部署项目管理软件 这种部署方式的软件可随时开通 节约成本 但质量也参差不齐 考虑到多方面因素 我们公司最终决定用在线的项目管理工具 现在使用的工具是偶然参加展览会发现的 不得不说试
  • java实现远程桌面_?启迪云技术栈

    Openstack面板或命令行提供两种方式来对客户虚拟机进行远程桌面访问 VNC控制台和SPICE HTML5 VNC控制台 Openstack提供一个组件nova novncproxy 它允许用户通过浏览器或vnc客户端来访问虚拟机 通常