如何在没有 ssh 的情况下访问 KVM 中的虚拟机?

如何在没有 ssh 的情况下访问 KVM 中的虚拟机?

如何在不使用 ssh 的情况下访问 KVM 中的虚拟机,ssh 端口已禁用,我想进入虚拟机并启用它。我尝试了virsh consoleVNC 解决方案,但它们不起作用,因为它没有从内部启用。似乎无法进入虚拟机。有什么办法可以进入吗?

答案1

访问虚拟机控制台的最简单方法是使用名为 的程序virt-manager。它是一个 GUI 程序,是用于管理虚拟机的“一体化”解决方案 - 创建、修改、启动/停止虚拟机等。

您可能virt-manager已在服务器上安装了 KVM。如果没有,请像平常安装任何软件一样使用命令进行安装

sudo apt install virt-manager

您应该virt-manager以 root 权限运行(否则它可能无法与libvirtd您机器上的守护进程通信),即。

sudo -b virt-manager

-b参数sudo告诉运行程序在背景中- 因为通常运行 GUI 程序 - 以避免阻塞终端)。

该程序基本上是不言自明的,您可以使用它轻松访问 VM 控制台。

但是,因为它是一个 GUI 程序,所以棘手的部分是如何让它在您通过 SSH 访问的远程服务器上运行(我想是这样,因为您没有确切说明如何访问服务器)。

在远程服务器上运行 GUI 程序需要两件事:

  1. 运行于本地机器(通过 SSH 连接到服务器),以便能够显示 GUI,并且
  2. 配置X 转发通过远程和本地机器之间的 SSH。

对于 2),你需要/etc/ssh/sshd_config在你的服务器上编辑该文件,并检查它是否包含这样一行:

X11Forwarding yes

通常不会,所以您必须添加该行并保存修改后的文件(注意:您必须以 root 身份执行此操作,例如使用sudo在文件上调用您喜欢的编辑器)。此后,您需要重新启动 ssh 服务:

sudo service ssh restart

对于 1),最简单的情况是您的本地计算机也是 Linux 计算机,因为它已经有一个 X 服务器在运行以操作其本地 GUI :)。在这种情况下,除了在连接到服务器时-X向命令添加参数外,您不需要执行任何特殊操作:ssh

ssh -X youruser@yourserver

-X参数告诉ssh通过 SSH 将 GUI 转发到本地 X 服务器,因此服务器上运行的程序将在您的本地计算机上显示其 GUI。

如果您的本地计算机是 Windows 计算机,那么您需要在本地安装一些提供 X 服务器功能的软件(例如西明)。启动 X 服务器后,您需要告诉 SSH 客户端转发 GUI。具体操作方法取决于您使用的 SSH 客户端。

ssh如果您使用Windows 10/11 中的内置命令,它应该支持-X与 Linux 类似的选项(但我还没有测试过)。

如果您使用的是 PuTTY(可能是 Windows 上最流行的 SSH 客户端),那么在打开连接之前,您应该在选项屏幕中转到连接 -> SSH(单击“+”展开)-> X11,然后勾选“启用 X11 转发”复选框 - 这相当于-Xssh命令中指定参数(我已经测试过并可以确认它有效)。

下面您可以看到访问服务器上的 VM 控制台的屏幕截图virt-manager(本例中的服务器是 CentOS,本地机器是相当老版本的 Ubuntu,VM 是 OpenWRT:)):

在此处输入图片描述

答案2

如前所述,Raj 给出了建议并做出了以下更改来解决我遇到的问题:

I used "virt-manager" instead of "sudo -b virt-manager".

I used "sudo usermod -a -G libvirt $USER" to add user to the "libvirt" group because it was encountering a permission error.

使用“virt-manager”而不是是sudo -b virt-manager为了避免使用“sudo”命令,因为该命令会提升权限并可能导致显示问题。使用将sudo usermod -a -G libvirt $USER用户添加到“libvirt”组以解决阻止连接到 libvirt 守护程序的权限错误。

相关内容