如何初始化一个multipass虚拟机?
包含zsh主题配置,ssh连接,root登录,基本配置等。
以macOS为例,windows的操作也类似,部分目录结构有差别。
新建一个multipass虚拟机
1 | multipass launch --name vmubuntu --cpus 2 --memory 4G --disk 40G |
其中:
- name:你的虚拟机名称
- cpus:分配的cpu个数
- memory:内存
- disk:磁盘大小
创建成功后,可以使用multipass ls
来查看所有的虚拟机实例,镜像,和运行状态。
如果想要查看某个虚拟机的具体配置,请使用multipass info <name>
。
虚拟机创建后默认是开机自启的,可以使用multipass start <name>
和multipass stop <name>
来控制虚拟机的启动与关闭。
使用multipass shell <name>
来进入到你的虚拟机实例。默认用户为ubuntu
。
配置ssh连接
安装openSSH
multipass默认是最新版本的ubuntu镜像,它也仅支持这一种操作系统,因此非常轻量级。
首先,你需要先进入虚拟机实例,安装openSSH服务。
1 | sudo apt update |
启动ssh服务并设置为开机自启。
1 | sudo systemctl start ssh |
可以使用下列命令查看启动状态。
1 | sudo systemctl status ssh |
结果显示active(running)
表示服务正在运行,enable
表示开机自启配置成功。
配置虚拟机服务端ssh连接
multipass默认会禁用作为服务端的ssh连接,我们需要修改一些配置。
当你想要通过宿主机使用ssh连接到虚拟机时,此时虚拟机作为服务端,你的物理机作为客户端。
配置虚拟机作为服务端ssh连接,需要编辑以下文件。
1 | sudo vim /etc/ssh/sshd_config |
vim编辑器中,切换到命令模式,使用/
来进行搜索,键入搜索内容,用N,n
来切换匹配项,我们需要改的有四个:
1 | PermitRootLogin yes # 允许 root 登录 |
之后保存,退出,重启ssh服务来使配置生效。
1 | sudo systemctl restart ssh |
我们还需要用以下命令来为用户设置密码。
1 | sudo passwd root |
之后使用exit
退出虚拟机,尝试ssh连接。
1 | ssh root@<ip> |
现在可以登录成功了,但每次需要输入密码,还是有点麻烦,接下来来配置一下ssh密钥,实现免密登录。
ssh免密登录
切换到你的宿主机终端,执行以下命令生成ssh密钥对,-f
后面跟的是你要保存的密钥文件位置。
1 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_vmubuntu |
之后一路回车即可,会在~/.ssh
目录下生成密钥对。
接下来编辑宿主机~/.ssh
目录下的config
文件,加入以下配置。
1 | Host vmubuntu |
如果你是macOS,请确保你在该文件中已经添加了下列全局配置。
1 | Host * |
之后进入虚拟机,编辑以下文件:
1 | sudo vim ~/.ssh/authorized_keys |
这里是你放公钥的地方,但你可能会发现里面已经有一个ssh公钥了,原因是实际上当你使用multipass shell <name>
连接到虚拟机时,实际上他的底层是ssh连接,当你创建一个虚拟机时,会自动配置这对ssh密钥,你可以选择保留它(建议保留),在后面添加你自己的ssh密钥即可。
之后使用ssh <name>
就可以直接连接了。
配置zsh
multipass的默认终端是bash,接下来我们把它修改为zsh,并配置好看的主题和代码补全插件。
下载字体
当你连接到虚拟机时,此时你的终端并没有改变,因此默认还会使用你终端的字体,你可以使用系统自带的终端或者是vscode的终端等等,强烈建议下载nerd字体,便于p10k主题图标和字体的正确渲染。
如果你是windows用户或者ubuntu桌面版用户,建议去官网下载,解压到你的字体目录中。
如果你是macOS用户,通过brew下载或者在官网下载都是可以的,默认会放进你的字体目录中。
官网:nerd fonts
之后在终端设置中选择字体MesloLGS Nerd Font Mono
即可。
安装zsh
首先使用以下命令查看自己的可用shell中是否有zsh,有的话就可以跳过这一步了。
1 | cat /etc/shells |
没有的话需要用以下命令安装:
1 | sudo apt install zsh -y |
安装之后用以下命令把zsh设置为默认终端:
1 | chsh -s $(which zsh) |
退出你的虚拟机,重新登录后即可生效,你会进入zsh的欢迎界面,这里会让你选择.zshrc
的配置方式,先选择0即可,后续配置主题时还会修改。
也可以使用以下命令检查:
1 | echo $SHELL # 输出默认shell |
安装on-my-zsh
on-my-zsh是一个强大的终端工具,可以配置各种插件和主题,下面我们来安装p10k主题,代码补全和高亮提示。
在这之前,你需要先配置代理,否则可能会下载的很慢(你也可以去网上自己找镜像源)。
编辑~/.profile
文件,添加以下内容,clash需要打开局域网模式。
顺便把语言中文也配置一下。
1 | sudo apt update |
1 | # 配置代理 |
使用source .profile
使修改内容生效。
使用下述命令下载on-my-zsh:
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
接下来下载主题和插件:
在这之前先更新一下你的git版本
1 | sudo apt update |
1 | # powerlevel10k主题 |
编辑~/.zshrc
文件,启用你的插件和主题,修改一下内容:
1 | # 修改主题 |
使用source ~/.zshrc
使修改生效。
接下来你会进入p10k主题的引导设置界面,按照自己喜欢的设置即可,如果没有进入,可以通过以下命令进入:
1 | p10k configure |
于是,你就得到一个好看的shell了!
说些什么吧!