如果你希望通过:

ssh user@virtualMachine

这样的方式连接到 libvirt 建立的 KVM虚拟机,那么你需要先获取到 虚拟机的IP 地址。

如果虚拟机网络接口配置的是 NAT 模式的话,可以通过 virsh domifaddr VM-Name 的命令得到它的 IP 地址。

有没有更加简单的方法,让我们能更方便地使用呢?

答案就是:使用libnss-libvirt为KVM主机注册虚拟机的地址

$ sudo yum install libvirt-nss ## RHEL/CentOS/Fedora ##
$ sudo apt install libnss-libvirt ## Debian/Ubuntu ##

使用下面的命令

$ grep -w 'hosts:' /etc/nsswitch.conf

确认,有以下的配置存在:

files libvirt libvirt_guest dns mymachines

现在就可以使用 vm list 的名称,通过 ssh 去连接它了:

$ virsh list
$ ping vm-name-here
$ ssh user@vm-name-here

但是, 它的条目不会出现在 /etc/hosts 文件中。 只要你能够 ping 或 ssh 时能够正确获取到虚拟机对应的IP地址,而不会出现下面类似的提示:

$ ping vm-name-here
ping: vm-name-here: Temporary failure in name resolution

就表示 libnss-libvirt 工作正常。

参考: