0 前言

以前大学用的6代 i5 闲置在家吃灰尘,想着物尽其用的准则,想着搞个虚拟机来折腾下 linux 环境。于是装置 Multipass 来玩玩(其实是我当初用的电脑只有 16G 内存不够跑几个虚拟机实例┑( ̄  ̄)┍)。

对于 Mutlipass

Multipass 是 Ubuntu 官网推广的一个反对多个虚拟机实例运行的平台,非常适合 win 用户学习和应用 linux 环境。
官网地址:https://multipass.run/

1 在 Hyper-v 管理器增加虚构网卡

在装置 Multipass 时,windows 会主动开启 hyper-v 的性能(毕竟 windows 跑虚拟机依赖这个性能)。
以 win10 为例,须要在 “虚构交换机治理” -> 抉择“内部”类型的虚构交换机


这里我创立的虚构交换机名称为ext-switch

2 查看本机 ip

在 cmd 中,输出 ipconfig ,查看本机 ipv4 地址,以本机为例, ipv4 地址为 10.0.0.18

3 创立虚拟机

这里以创立 1 cpu/4G ram/20G disk 为例:

multipass launch -c 1 -m 4G -d 20G -n my-instance-1

稍等片刻,就创立和启动好名为 my-instance-1 的实例

4 向虚拟机增加网卡

4.1 在 hyper-v 给虚拟机调配虚拟机网卡

抉择咱们刚刚创立好的虚拟机,点击“设置”:

点击“增加硬件”,抉择“网络适配器”

而后抉择咱们后面创立好名为 ext-switch 的网络适配器

4.2 进入虚拟机:

multipass shell my-instance-1

4.3 批改 netplan 文件

netplan 是 ubuntu 保护网卡信息的中央,配置文件地址在 /etc/netplan/50-cloud-init.yaml

批改文件信息:

sudo vi /etc/netplan/50-cloud-init.yaml

批改后的文件内容信息:

# This file is generated from information provided by the datasource.  Changes# to it will not persist across an instance reboot.  To disable cloud-init's# network configuration capabilities, write a file# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:# network: {config: disabled}network:    ethernets:        eth0:            dhcp4: true            match:                macaddress: 52:54:00:51:78:3a            set-name: eth0        eth1:            addresses:                - 10.0.0.102/24            nameservers:                addresses: [10.0.0.1]            routes:                - to: default                  via: 10.0.0.1    version: 2

这里新建了一个名为 eth1 的网卡信息,蕴含了 addressesnameserverssroutes 的信息。

  • addresses 项为 ipv4 的地址列表,因为本机的 ip 地址为 10.0.0.18 ,故咱们这里的地址必须为 10.0.0.{虚拟机须要应用局域网未应用过的ipv4地址}/24,我这里为 10.0.0.102/24 。因为地址应用了 cidr 来示意,故子网掩码是 255.255.255.0
  • nameservers 则是 dns 服务器,通常都是咱们连贯局域网的路由器地址,这里是 [10.0.0.1]
  • routes 则是网关,网关也是间接走局域网路由器的地址,这里是 10.0.0.1

4.3 利用批改后的 netplan

sudo netplan --debug apply

输出上述命令来利用批改后的 netplan 配置信息,其中 --debug 参数不便咱们查看利用过程中有没有报错(毕竟 shell 外面手写配置信息容易翻车,特地是 windows 自带的 cmd ┑( ̄  ̄)┍)

4.4 验证是否失效

退出以后 cmd 的会话,而后从新关上 cmd ,输出 multipass shell my-instance-1 从新进入实例,这时咱们看到新建的网卡曾经可能应用了(在 IPv4 address for eth1 的中央)

5 局域网拜访

笔者以后应用的 ubuntu 版本为 ubuntu 22.04.2 LTS 版本,曾经内置了 openssh,故不须要另外装置 openssh

5.1 批改 ssh 配置信息

ssh 配置信息目录在 /etc/ssh/sshd_config 中,默认状况下,ssh 是不反对明码登录的,这里要批改以下信息以反对其余机器通过明码登录该节点:

# 在 vi 命令中,能够通过 :/PasswordAuthentication 疾速搜寻到该行配置PasswordAuthentication yes# 容许 root 用户登录PermitRootLogin yes

批改结束后,重启 ssh 服务:

sudo service ssh restart

5.2 批改以后登录用户的明码

通过 multipass 创立的实例,是没有指定明码的,所以咱们要重置明码,我这里的用户为 ubuntu :

sudo passwd ubuntu

5.3 验证后果

通过其余机器 ssh 登录(这里应用的 termius)

6 参考博客/论坛

  • 为Multipass的Ubuntu实例增加固定IP
  • netplan generate: gateway4 has been deprecated, use default routes instead
  • canonical/netplan github 例子
  • ubuntu开启ssh明码登陆