要直接连接到QEMU虚拟机,而不通过端口转发的方式,可以采用桥接网络(Bridged Networking)或创建一个虚拟网络接口卡(TAP)的方式,让虚拟机与宿主机处于同一网络中。这样,虚拟机可以直接获得一个与宿主机相同网段的IP地址,从而使得宿主机可以直接连接到虚拟机。以下是详细的操作步骤:

方法 1: 使用桥接网络 (Bridged Networking)

通过桥接网络,可以让虚拟机直接与宿主机所在的物理网络通信。

1. 修改启动脚本使用桥接网络

你需要将QEMU的网络设置从-net user修改为桥接网络。假设宿主机的网络接口为eth0wlan0(具体接口名称可能因网卡不同而有所不同)。

@echo off
"C:\Program Files\qemu\qemu-system-aarch64.exe" -m 8G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios c:\isos\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=c:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -net nic,model=virtio -net bridge,br=br0
2. 配置桥接网络
  • Windows: 通常不需要额外配置,如果使用的是VMware或者VirtualBox,可以在安装时选择桥接适配器。QEMU也支持桥接,但需要手动创建网络桥。

  • Linux: 如果你使用Linux宿主机,需要创建一个桥接接口,例如br0,并将物理网络接口(例如eth0wlan0)桥接到br0

    创建桥接接口的步骤(以netplan为例):

    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
      bridges:
        br0:
          interfaces: [eth0]
          dhcp4: yes
    

    之后,重新启动网络服务:

    sudo netplan apply
    
3. 获取虚拟机IP地址

在虚拟机启动后,使用命令查看虚拟机获得的IP地址:

ip a

或者使用ifconfig命令:

ifconfig

找到与虚拟机网络接口相关的IP地址。

4. 直接连接到虚拟机

在Xshell中,直接使用虚拟机的IP地址进行连接。设置如下:

  • 主机:虚拟机的IP地址
  • 协议:SSH
  • 端口号:22(默认)

方法 2: 使用TAP接口 (仅Linux)

在Linux系统上,使用TAP接口也可以实现虚拟机与宿主机之间的直接通信。

1. 创建TAP接口
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 up
sudo ip link set tap0 master br0
2. 修改启动脚本使用TAP接口
"C:\Program Files\qemu\qemu-system-aarch64.exe" -m 8G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios c:\isos\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=c:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=no
3. 获取虚拟机IP地址并连接

获取虚拟机的IP地址后,通过Xshell直接连接。

注意事项

  • 桥接网络和TAP接口: 需要宿主机的网络配置支持(比如网卡允许混合模式,尤其在Wi-Fi接口上可能受限)。
  • 虚拟机的防火墙配置: 确保虚拟机的防火墙允许SSH访问。
  • 宿主机网络配置: 确保宿主机的网络不会阻止虚拟机的流量。

通过这些配置,虚拟机可以直接和宿主机通信,并且宿主机可以直接通过Xshell连接到虚拟机的SSH服务。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐