如何在不使用 ssh 的情况下访问 KVM 中的虚拟机,ssh 端口已禁用,我想进入虚拟机并启用它。我尝试了virsh console
VNC 解决方案,但它们不起作用,因为它没有从内部启用。似乎无法进入虚拟机。有什么办法可以进入吗?
答案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 程序需要两件事:
- 运行于本地机器(通过 SSH 连接到服务器),以便能够显示 GUI,并且
- 配置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 转发”复选框 - 这相当于-X
在ssh
命令中指定参数(我已经测试过并可以确认它有效)。
下面您可以看到访问服务器上的 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 守护程序的权限错误。