KVM虚拟化:为来宾操作系统启动VNC远程访问
时间:2020-01-09 10:41:43 来源:igfitidea点击:
我在Redhat Enterprise Linux 5.5下运行KVM虚拟机(FreeBSD 7和Fedora Linux 13桌面)。
但是,我无法通过VNC(虚拟网络计算)进行远程访问来访问我的Fedora Linux图形桌面或FreeBSD控制台。
如何在不重新安装两个操作系统的情况下打开VNC支持?
您需要将vncserver追加到来宾操作系统控制台。
可以使用以下任何一种方法来完成此操作:
方法1:命令行选项
通常,QEMU(/usr/libexec/qemu-kvm)使用SDL显示VGA输出。
使用-vnc选项,您可以让QEMU在VNC显示器上监听,并通过VNC会话重定向VGA显示。
使用VNC显示屏时,如果不使用en-us,则必须使用-k参数设置键盘布局。
显示的有效语法如下:
-vnc :0 -vnc 192.168.1.5:0 -vnc 0.0.0.0:5 -vnc 0.0.0.0:1 -k en-us #### Require that password based authentication is used for client connections #### -vnc 0.0.0.0:1,password -k en-us
在以下示例中,使用vnc启动centos1 guest虚拟机
/usr/libexec/qemu-kvm -S -M rhel5.4.0 -m 1024 -smp 1 -vnc 0.0.0.0:1 -k en-us -name centos1 -monitor pty -boot c -drive file=/var/lib/libvirt/images/centos1.img
方法2:qemu-kvm VM配置文件(推荐)
您需要编辑XML格式的VM配置文件。
配置文件位于/etc/libvirt/qemu目录中。
在此示例中,如下编辑centos1.xml:
# vi /etc/libvirt/qemu/centos1.xml
在最终</devices>之前添加以下行:
<graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
这是我的示例配置文件:
<domain type='kvm'> <name>centos1</name> <uuid>88d067cf-e5f7-7229-f35f-472a9c884864</uuid> <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>1</vcpu> <os> <type arch='x86_64' machine='rhel5.4.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' cache='none'/> <source file='/emc/vms/images/host302.f02.dc05.corplan.theitroad.com/c/centos1.img'/> <target dev='vda' bus='virtio'/> </disk> <interface type='bridge'> <mac address='xx:yy:zz:ee:f4:63'/> <source bridge='br0'/> <model type='virtio'/> </interface> <interface type='bridge'> <mac address='54:52:xx:yy:zz:ee'/> <source bridge='br1'/> <model type='virtio'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target port='0'/> </console> <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/> </devices> </domain>
最后,重新启动libvirtd:
# /etc/init.d/libvirtd restart # virsh shutdown centos1 # virsh start centos1
如何使用VNC客户端?
输入您的VNC(KVM)服务器ip和端口:
使用VNC客户端连接到KVM Guest
连接后,您可以查看桌面:
在KVM下运行的VNC会话上的RHEL 6 Guest Beta Desktop
确保使用ssh隧道或某种VPN会话浏览桌面。
如何找出给定域/VM的当前VNC设置?
执行以下命令:
# virsh vncdisplay domainName # virsh vncdisplay 3 # virsh vncdisplay centos1
输出示例:
:2
如何使用密码保护我的VNC会话?
passwd属性以明文形式提供VNC密码(因此,请确保root用户只能读取xml配置文件)。
如下编辑centos1.xml文件:
<graphics type='vnc' port='-1' autoport='yes' passwd='YOUR-PASSWORD-HERE' keymap='en-us'/>
或者
<graphics type='vnc' port='-1' autoport='yes' listen='192.168.1.5' passwd='YOUR-PASSWORD-HERE' keymap='en-us'/>
其中:
- type = vnc:图形元素具有强制的type属性,该属性采用值sdl,vnc,rdp或Desktop。在这种情况下,将其设置为VNC以进行远程访问。
- autoport = yes:autoport属性是新的首选语法,用于指示要使用的TCP端口的自动分配。
- " passwd = YOUR-PASSWORD-HERE":passwd属性以明文形式提供VNC密码。
keymap = en-us
:keymap属性指定要使用的键映射。listen = 192.168.1.5
:listen属性是服务器要监听的IP地址。
保存并关闭文件。
重新启动服务,如下所示:
# /etc/init.d/libvirtd restart # virsh start centos1