如何在 virt-manager 中端口转发 SSH?

pap*_*tis 5 port-forwarding qemu virt-manager

我已经在 virt-manager 中设置了 Gentoo 来宾,但无法从主机通过 SSH 连接到它。我读过,使用 qemu 我需要进行一些端口转发才能访问来宾计算机中的端口。我在 virt-manager 中找不到任何选项。怎么可能做到这一点?

我在 Ubuntu 16.10 上使用 Virt Manager 1.3.2。

小智 6

只是为了将其记录在网络上的某个地方:

大约两年后,我通过手动将相关的 QEMU 参数添加到 KVM XML 文件(该文件在幕后保存了所有奇特的虚拟化 foo 的配置)成功地做到了这一点。

以下是我为向用户网络授予端口转发权限而执行的步骤;就我而言,将主机的端口 22222 转发到访客的端口 22:

我的模拟机器在这里将被称为ubuntu18.04。

  1. 打开 xml 配置以通过 virsh 进行编辑

    $ virsh -c qemu:///session edit ubuntu18.04
    
    Run Code Online (Sandbox Code Playgroud)
  2. 找到并删除“用户”类型界面的配置,它可能看起来像这样:

    <interface type='user'>
      <mac address='52:54:00:52:35:ff'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将 QEMU 命名空间添加到(根)域标记:

    <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 手动将现在缺少的接口配置添加为域标记内某处的 QEMU 参数(例如,作为 的最后一个子级<domain>):

    <qemu:commandline>
      <qemu:arg value='-netdev'/>
      <qemu:arg value='user,id=mynet.0,net=10.0.10.0/24,hostfwd=tcp::22222-:22'/>
      <qemu:arg value='-device'/>
      <qemu:arg value='rtl8139,netdev=mynet.0'/>
    </qemu:commandline>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 保存配置并启动/重新启动虚拟机。

  6. ssh 离开:

    ssh myusername@localhost -p 22222
    
    Run Code Online (Sandbox Code Playgroud)


sou*_*edi 1

我的理解恰恰相反。如果 libvirt VM 的网络设备配置为连接到virbr0,您应该能够从主机访问它。

libvirt 称之为“桥接”网络。网络设备的另一个选项(此选项不起作用)称为“用户”网络。如果这不是您的问题,您将必须提供更多信息。

更多详细信息请参见:http://xkahn.zoned.net/blog/2013/11/26/networking-and-gnome-boxes

Arch Linux wiki建议虚拟交换机^Wbridgevibr0是 libvirt 守护进程默认配置的一部分,因此您只需确保 VM 配置为使用它即可。他们还链接到详细指南。对于,请参阅“基于 NAT 的网络virbr0部分