24 KVM管理虚拟机-配置VNC-TLS登录

2023-10-27

24 KVM管理虚拟机-配置VNC-TLS登录

24.1 概述

VNC服务端和客户端默认采用明文方式进行数据传输,因此通信内容可能被第三方截获。为了提升安全性,openEuler支持VNC服务端配置TLS模式进行加密认证。TLS(Tansport Layer Security)即传输层安全,可以实现VNC服务端和客户端之间加密通信,从而防止通信内容被第三方截获。

img 说明:

  • 使用TLS加密认证模式需要VNC客户端支持TLS模式(例如TigerVNC),否则无法连接到VNC客户端。
  • TLS加密认证模式配置粒度为主机服务器级别,开启该特性后,主机上正在运行的所有虚拟机对应的VNC客户端都将开启TLS加密认证模式。

24.2 操作步骤

VNC开启TLS加密认证模式的操作步骤如下:

  1. 登录VNC服务端所在主机,开启或修改服务端配置文件/etc/libvirt/qemu.conf中对应的配置项。相关配置内容如下所示:

    vnc_listen = "x.x.x.x"          # "x.x.x.x"为VNC的侦听地址,请用户根据实际配置,VNC服务端只允许该地址或地址段范围内的客户端连接请求
    vnc_tls = 1                     # 配置为1,表示开启VNC TLS支持
    vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"        #指定证书存放的路径为/etc/pki/libvirt-vnc
    vnc_tls_x509_verify = 1                               #配置为1,表示TLS认证使用X509证书
    
  2. 为VNC创建证书和私钥文件。此处以GNU TLS为例进行说明。

    img 说明:
    使用GNU TLS,请提前安装好gnu-utils软件包。

    1. 制作证书颁发机构CA(Certificate Authority)的证书文件。

      # certtool --generate-privkey > ca-key.pem
      
    2. 制作自签名的CA证书公私钥。其中Your organization name为机构名,由用户指定。

      # cat > ca.info<<EOF
      cn = Your organization name 
      ca
      cert_signing_key
      EOF
      
      # certtool --generate-self-signed \
                 --load-privkey ca-key.pem \
                 --template ca.info \
                 --outfile ca-cert.pem
      

      上述生成文件,ca-cert.pem是生成的CA公钥,ca-key.pem是生成的CA私钥,需要由CA妥善保管防止泄露。

    3. 为VNC服务端颁发证书。其中Server Organization Name为实际的服务名称,例如server.foo.com,需要用户根据实际指定。

      # cat > server.info<<EOF
      cn = Server Organization Name
      tls_www_server
      encryption_key
      signing_key
      EOF
      
      # certtool --generate-privkey > server-key.pem
      # certtool --generate-certificate \
                 --load-ca-certificate ca-cert.pem \
                 --load-ca-privkey ca-key.pem \
                 --load-privkey server-key.pem \
                 --template server.info \
                 --outfile server-cert.pem
      

      上述生成文件,server-key.pem是VNC服务端的私钥,server-cert.pem是VNC服务端的公钥。

    4. 为VNC客户端颁发证书。

      # cat > client.info<<EOF
      cn = Client Organization Name
      tls_www_client
      encryption_key
      signing_key
      EOF
      
      # certtool --generate-privkey > client-key.pem
      # certtool --generate-certificate \
                 --load-ca-certificate ca-cert.pem \
                 --load-ca-privkey ca-key.pem \
                 --load-privkey client-key.pem \
                 --template client.info \
                 --outfile client-cert.pem
      

      上述生成文件,client-key.pem是VNC客户端的私钥,client-cert.pem是VNC客户端的公钥,生成的公私钥对需要拷贝到VNC客户端。

  3. 关闭需要被登录的虚拟机,重启VNC服务端所在主机的libvirtd服务。

    # systemctl restart libvirtd
    
  4. 将生成的服务端证书放置到VNC服务端指定目录并将证书的权限改为只允许当前用户读写。

    # sudo mkdir -m 750 /etc/pki/libvirt-vnc
    # cp ca-cert.pem /etc/pki/libvirt-vnc/ca-cert.pem
    # cp server-cert.pem /etc/pki/libvirt-vnc/server-cert.pem
    # cp server-key.pem /etc/pki/libvirt-vnc/server-key.pem
    # chmod 0600 /etc/pki/libvirt-vnc/*
    
  5. 将生成的客户端证书ca-cert.pem,client-cert.pem和client-key.pem拷贝到VNC客户端。配置VNC客户端的TLS证书后即可使用VNC TLS登录。

    img 说明:

    • VNC客户端证书的配置请参见各客户端对应的使用说明,由用户自行配置。
    • 登录虚拟机的方式请参见“使用VNC密码登录”。

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

24 KVM管理虚拟机-配置VNC-TLS登录 的相关文章

  • linux命令中括号的用途是什么[重复]

    这个问题在这里已经有答案了 我在 Linux 终端中运行以下命令 谁能告诉我 Linux 终端中括号和以下命令的用途是什么 echo GET HTTP 1 0 echo 主机 www google com echo 数控 www googl
  • 在 Ubuntu 中找不到 X11/Xlib.h

    我试图在 Linux 上使用 open gl 编写一个相当简单的程序 但在编译时它说 编译拇指 egl 我对 GL 完全陌生 不知道出了什么问题 快速搜索使用 apt search Xlib h 打开 libx11 dev 包 但纯 Ope
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 如何将后台作业的输出分配给 bash 变量?

    我想在 bash 中运行后台作业并将其结果分配给一个变量 我不喜欢使用临时文件 并且希望同时运行多个类似的后台任务 root root var echo hello world root root echo var hello world
  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那
  • 在 Linux 上访问 main 之外的主要参数

    是否可以访问参数main在外面main 即在共享库构造函数中 在 Linux 上除了通过解析之外 proc self cmdline 您可以通过将构造函数放入 init array部分 功能在 init array 不像 init 使用相同
  • 如何访问 mmaped /dev/mem 而不导致 Linux 内核崩溃?

    我有一个简单的程序 尝试访问用户空间中的物理内存 其中内核存储第一个结构页 在 64 位机器上 该地址是 内核虚拟地址 ffffea0000000000 物理地址 0000620000000000 我正在尝试通过用户空间中的 mmap 访问
  • 找出 Linux 上的默认语言

    有没有办法从C语言中找出Linux系统的默认语言 有 POSIX API 可以实现这个功能吗 例如 我想要一个人类可读格式的字符串 即德语系统上的 German 或 Deutsch 法语系统上的 French 或 Francais 等 有类
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • 将node.js +expressjs应用程序的NODE_ENV设置为ubuntu下的守护进程

    我按照这些说明让守护进程正常工作 http kevin vanzonneveld net techblog article run nodejs as a service on ubuntu karmic http kevin vanzon
  • 使用c在linux上分块读写

    我有一个 ASCII 文件 其中每一行都包含一个可变长度的记录 例如 Record 1 15 characters Record 2 200 characters Record 3 500 characters Record n X cha
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s

随机推荐

  • 2023 QEMU模拟FT2000+(armv8)运行麒麟V10并安装tensorflow2

    2023 QEMU模拟FT2000 armv8 运行麒麟V10并安装tensorflow2 资源准备 麒麟V10SP1 桌面 QEMU 4 1 0以上 qeum安装kylin python tensorflow2 10 0 资源准备 麒麟V
  • python--pandas学习总结

    目录 一 Series和DataFrame 1 pandas Series 2 pandas DataFrame 二 Pandas常见用法 1 访问数据 1 1 head 和tail 1 2 describe 1 3 T 1 4 sort
  • BES提示音

    基于BES2500提示音的日志 11656 I NONE L M 13 threadpredict awaken label 1 11656 I NONE L M 13 app voice report handler 11656 I NO
  • Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明

    Stable Diffuse 之 安装文件夹 以及操作界面 UI Prompt相关说明 目录 Stable Diffuse 之 安装文件夹 以及操作界面 UI Prompt相关说明 一 简单介绍 二 安装文件相关说明 三 界面的简单说明 四
  • 微博评论内容的Chatgpt 话题聚焦和情感分析 情感分析&LDA主题&可视化&多元线性回归

    为了分析热点话题背后演化的逻辑 本项目选取了掀起大范围讨论的OpenAI发布的语言训练模型 ChatGPT 作为研究对象 通过对微博 豆瓣 知乎等社交平台进行考察分析 微博以活跃用户多 讨论热度高 公众关注度广等特点成为了本小组的第一首选
  • Makefile中echo和@echo的区别

    echo 会在shell中显示echo这条命令和这条命令的输出结果 echo 不会在shell中显示echo这条命令 但是会显示命令的输出结果 例如 echo test echo hello world echo test with add
  • 网络结构(1)ResNeXt介绍及cardinality介绍

    写这篇文章是因为最近在阅读论文的过程中 接触到了 cardinality 这个概念 出自2017年CVPR何凯明大神组的论文Aggregated Residual Transformations for Deep Neural Networ
  • 例题:加权合并与路径压缩

    题目 使用加权合并规则与路径压缩 对下列从0到15之间的数的等价对进行归并 并给出所得到的树的父指针表示法的数组表示 在初始情况下 集合中的每个元素分别在独立的等价类中 当两棵待归并的树的规模同样大时 使结点值较大的根结点作为值较小的根结点
  • 从redis为什么单线程还那么快到epoll的设计原理

    文章目录 redis为什么快 上下文切换 为什么采用单线程 redis的I O多路复用 epoll与select poll区别 select poll的几大缺点 用户态拷贝到内核态 epoll IO多路复用模型实现机制 epoll 优势详解
  • Redis-密钥登录ssh,免密码

    1 在kali上生成密钥 命令 ssh keygen t rsa 因为我这里有了 所以y选择了覆盖 如果是想无密码登录的话 则直接enter跳过 2 因为我这里config set dir root ssh dir有问题 所以我直接就把生成
  • 结构化开发方法--系统分析及设计概述

    说在前面 本系列文章专注于软考备考复习内容梳理 文章内容是对教材中知识点和考点的提炼 备考过程中可以有针对的进行复习 减少阅读量 有的放矢 导航目录 一 系统分析概述 二 系统设计的基本原理 三 系统总体结构设计 四 系统文档信息 一 系统
  • 【避坑指“难”】自定义AntV G2 Chart柱状图悬浮框信息

    实现效果如下 官方配置如下 import Chart from antv g2 const data time 16 Q1 type 移动游戏 value 0 time 16 Q1 type 移动购物 value 17 8 time 16
  • 不同编程语言语言的适用场景

    1 如何通俗地解释 C C C Java JavaScript HTML Python的用处 2 二十五岁零基础转行做软件测试怎么样 3 软件测试中的自动化测试一般要会什么编程语言 4 Which Programming Language
  • Linux 定时器设置

    crontab l 查看定时器任务 crontab e 编辑 定时器任务 sbin service crond start 启动服务 sbin service crond stop 关闭服务 sbin service crond resta
  • 【CUDA】第一个CUDA程序-addVector

    本文主要通过对两个浮点数组中的数据进行相加 并将其结果放入第三个数组中 其算法分别在CPU GPU上分别执行 并比较了所需时间 强烈感受到GPU的并行计算能力 这里 每个数组的元素大小为30000000个 一 实现代码 include
  • 模拟信号_模拟信号与模拟电路

    信号 用来携带信息的物理量 电信号 随着时间变化的电压或电流 在数学上 我们可以通过函数来表达这种变化情况 因此我们可以画出波形 电子电路中的信号分类 数字信号和模拟信号 模拟信号的特点 连续性 无论是在时间上还是在数值上 大多数的物理量均
  • Java中常见的异常类型是哪两种?他们有什么区别?

    Java中有两种异常 受检查的异常 checked 和不受检查的异常 unchecked 不受检查的异常不需要在方法或者是构造函数上声明 就算是方法或者是构造函数可能会抛出这样的异常 并且不受检查的异常可以传播到方法或者构造函数的外面 相反
  • 头条面经

    先来波面经 等这段时间秋招有空闲了再来好好总结 首先第一个 手写堆排快排 问题是求前k个大的数 或者第k大的数 第二个 intent的作用 为什么采用intent去连接四大组件 因为在各大组件将要回收的时候 可以将其保留 可以参考hongy
  • vue el-element中el-select选中值,数据已经改变但选择框中不显示值,需要其他输入框输入值才显示这个选择框才会显示刚才选中的值

    项目场景
  • 24 KVM管理虚拟机-配置VNC-TLS登录

    文章目录 24 KVM管理虚拟机 配置VNC TLS登录 24 1 概述 24 2 操作步骤 24 KVM管理虚拟机 配置VNC TLS登录 24 1 概述 VNC服务端和客户端默认采用明文方式进行数据传输 因此通信内容可能被第三方截获 为