ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu

本文主要内容:

  1. ubuntu系统的服务器上创建qemu虚拟机后,如何用ssh的方式远程连接这个qemu虚拟机。
  2. ubuntu服务器上用femu模拟zns设备后如何,如何在windows下用vscode远程连接它。

起因是我觉得qemu界面好丑,而且我都不知道怎么复制qemu里的文本,我觉得很麻烦。vscode或者mobaXterm等远程连接都是可以复制terminal的文本的,所以想在宿主机里ssh连接qemu。
结果我能在宿主机中ping通虚拟机的ip,却总是无法ssh连接成功。要么报错timed out,要么报错connection refused。弄这么俩问题差点把我送走!

ubuntu宿主机ssh远程连接qemu虚拟机

qemu安装相关的内容我就不记录了!我这里默认您已经远程连接上了ubuntu宿主机host,且您的虚拟机中已经安装ssh所需的相关软件(例如open-ssh等)。

首先在宿主机host中进入到你安装虚拟机系统的那个盘所在的文件夹,我是安装在femu.qcow2上的,这个盘在~/images中,所以原本启动虚拟机的命令为:

qemu-system-x86_64 -hda femu.qcow2 -net user -net nic -m 8192 -smp 8 -cpu host -enable-kvm

我们将其修改为:

qemu-system-x86_64 -hda femu.qcow2 -net user,hostfwd=tcp::2222-:22 -net nic -m 8192 -smp 8 -cpu host -enable-kvm

可以看到多出了hostfwd=tcp:2222-:22,意思是将虚拟机的22号端口映射到host的2222端口(你也可以用改成别的端口)。等虚拟机启动之后,在宿主机host端输入sudo netstat -anp | grep 2222 ,看看是不是有输出,我的输出如下:

zwl@zns:~$ sudo netstat -anp | grep 2222
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      226069/qemu-system-

然后在宿主机host端输入:
ssh -p 2222 [email protected]
输出如下图所示,会问你要不要继续连接,输入yes,然后回车。
这样我们就在宿主机中通过ssh连上了qemu虚拟机。
注意,如果上一步中您的输出是:

tcp        0      0 xxx.x.x.x:2222            0.0.0.0:*               LISTEN      226069/qemu-system-

那么连接的时候命令就变成:
ssh -p 2222 [email protected]
因为有博主这个地方的地址是127.0.0.1,结果我也在@后面写127.0.0.1,结果就一直连接失败。我真是傻真的。

ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu_第1张图片

用vscode远程连接femu

因为我模拟的是zns,因此使用的是femu/build-femu/下面的./run-zns.sh脚本启动。
我们可以先看看脚本里的内容,可以看到默认是将虚拟机的22端口映射到宿主机8080端口。
ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu_第2张图片

我把它改成了6001,所以我的是:
ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu_第3张图片
现在,在宿主机host输入./run-zns.sh
等出现下图这个界面的时候,我们在host查看一下6001端口是否已经处于监听状态了
ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu_第4张图片
已经处于监听状态了
在这里插入图片描述

然后在vsocde远程连接的config文件中,写如下配置:
其中第一个是主机host,第二个是femu。二者的HostName处填写的都是host的ip,只是端口不一样。femu的远程连接端口填写我们映射的端口。
ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu_第5张图片
然后在侧边栏可以看到femu的服务器了,然后连接,然后按照提示输入密码等等就可以了。
ubuntu宿主机ssh远程连接qemu虚拟机以及如何用vscode远程连接femu_第6张图片

你可能感兴趣的:(ubuntu,ssh)