无需在 Ubuntu 服务器上设置 Xserver 即可连接到 kvm guest 的 vnc

无需在 Ubuntu 服务器上设置 Xserver 即可连接到 kvm guest 的 vnc

我有一台全新安装的 Ubuntu 服务器,没有 X11,没有 ubuntu-desktop、gdm、lightdm 等桌面环境。我安装了 tightvnc、qemu-kvm,并通过命令行准备了一个客户虚拟机,其中 virt-install 指向在端口 5900 使用 vnc。

我确实了解在主机(在本例中为 Ubuntu 服务器)上拥有桌面环境对于连接和监控主机本身的必要性。

但我不明白在仅连接到客户虚拟机的情况下,主机的桌面环境是否必要。我认为主机 kvm 和客户虚拟机的 GUI 似乎是重复的。

我查看了一些指南,它们指向带有 X11 的 vncserver。但是,既然 netstat 告诉我 qemu-kvm (5900) 和 vncserver (5901) 正在监听 2 个端口,那么它与 kvm 上的 vnc 设置有什么关系呢?

到目前为止,我可以连接到端口 5901,当然还可以收到有关缺少 X11 的图形 GUI 消息。但是从另一台 PC 通过 LAN 连接到端口 5900 时,仍然会卡在“正在连接”状态。

如何在不安装 Ubuntu 服务器 18.04.2 桌面环境的情况下为客户虚拟机启用 vnc?

答案1

好的,我终于可以让它工作了,所以我在这里发布答案,以防有人需要它。

简而言之,我不需要同时在 Ubuntu 服务器上安装 vncserver 和桌面环境,即可将 vnc 与 KVM 客户端一起使用。KVM 确实带有内置 vncserver,因此它具有不同的配置。当我尝试为主机 Ubuntu 服务器安装和配置 vncserver 时,我犯了一个大错误,因为它对我来说完全没用。

要为 KVM 启用 vnc,只需启用以下两个选项/etc/libvirt/qemu.conf

vnc_listen = "0.0.0.0"
vnc_password = your-password

我的第二个错误是没有设置 vnc 的密码,因此 vncviewer 总是无法连接,即使在密码设置为空的情况下。

之后,在/etc/libvirt/libvirtd.conf

listen_tcp = 1

当然,还要重新启动 libvirt 服务

service libvirtd restart

现在可以通过类似如下的命令行安装 KVM 客户机:

virt-install [...] --graphics vnc,port=5900,listen=0.0.0.0

从您想要连接到 Ubuntu 服务器的客户端 PC,确保转发类似于以下内容的 vnc 端口:

ssh -v -L 5900:127.0.0.1:5900 -N -f 192.168.1.100

该地址127.0.0.1:5900是Ubuntu服务器上vnc的默认localhost地址。我没有启用防火墙,所以不需要将端口5900添加到防火墙中。

最后,在客户端电脑上打开 vncviewer 并连接到vnc://127.0.0.1:5900,然后提供密码并享受您的机器。

答案2

据我所知,KVM 使用 2 个端口,分别用于输入(模拟键盘和鼠标)和输出(屏幕)。如果您只使用终端,最好使用 SSH 连接。

相关内容