如何为 Hyper-V 虚拟机(Ubuntu 19.10 快速创建)配置静态 IP 地址以避免每次重新启动后更新 ssh 配置?

Wla*_*lad 3 ssh hyper-v virtual-machine ubuntu visual-studio-code

我正在使用 VS-Code 远程开发插件在我的笔记本电脑上的 Windows 10 上运行的 hyper-v VM(这是一个 Ubuntu 19.10 - 快速创建)上编辑代码。VM 使用 hyper-v 的默认交换机进行网络连接。VS-Code 远程开发插件允许编辑 ssh 配置文件(C:\Users\username\ssh\config),这使得连接到 VM 变得容易。这是我的 ssh 配置的样子:

Host hypervubuntu
    HostName 172.18.10.76
    User my_UbuntuVM_username
Run Code Online (Sandbox Code Playgroud)

我的 hyper-v 默认开关的设置(看起来它设置为使用静态 IP,但实际上此设置在每次重新启动 Windows 后都会更改): 在此处输入图片说明

问题是在每次 Windows 重新启动时,VM(以及 hyper-v 的默认交换机)的 IP 地址发生变化,需要编辑 ssh 配置以允许 VS-Code 再次连接到 VM。IP 的更改还会导致进一步的问题,例如需要重新启动 VM 以及在每个新的 ssh 连接上确认“新”主机的真实性。

我已经尝试在 VM 的网络设置中设置静态 IP,但这似乎不会持续存在,因为它们在每次重新启动 VM 后都改回“自动(DHCP)”。

正如另一篇文章中所建议的那样,我尝试创建一个带有静态 IP 的新虚拟交换机,因为 Hyper-V 的默认交换机似乎并不意味着具有静态 IP。但这是我根本无法工作的地方。

即使在 Windows 或 VM 重新启动后,必须配置哪些部分才能使 VS-Code 顺利重新连接?

免责声明:我的网络技能水平 == 菜鸟:\

编辑:

在@AlexKrauss 给出了很好的答案后,我需要执行的步骤是在我的 Hyper-V Ubuntu 19.10 桌面虚拟机中设置静态 IP:

一、定位并打开网络配置文件

cd /etc/netplan/
sudo nano 01-network-manager-all.yaml
Run Code Online (Sandbox Code Playgroud)

二、替换它的内容如下

network:
  version: 2
  renderer: networkd  
  ethernets:
    eth0:
      addresses:
      - 192.168.0.2/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
        - 8.8.8.8
        - 8.8.4.4
      dhcp4: no
Run Code Online (Sandbox Code Playgroud)

三、应用和检查的更改

sudo netplan apply
ifconfig -a
Run Code Online (Sandbox Code Playgroud)

四、调整了 VSCode 使用的 ssh 配置中的 IP 地址

Host hypervubuntu
    HostName 192.168.0.2
    User my_UbuntuVM_username
Run Code Online (Sandbox Code Playgroud)

Ale*_*uss 8

我遇到了同样的问题,并找到了Microsoft 的分步指南,用于设置带有 NAT 的内部交换机并将 VM 连接到它。

它由 PowerShell 中的以下步骤组成

New-VMSwitch -SwitchName "SwitchName" -SwitchType Internal
Get-NetAdapter       // (note down ifIndex of the newly created switch as INDEX)
New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex <INDEX>
New-NetNat -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 192.168.0.0/24
Run Code Online (Sandbox Code Playgroud)

这使用 192.168.0.0/24 作为虚拟交换机的子网,其中 192.168.0.1 是主机的 IP,充当网关。

现在,VM 可以连接到 Hyper-V 管理器中的新交换机。

请注意,与默认交换机不同,没有通过 DHCP 进行自动网络配置,因此在 VM 内部,您必须在 VM 中配置静态 IP(例如,192.168.0.2)。