VirtualBox 下虚拟机与主机之间通信的要点
VirtualBox 下虚拟机与主机之间通信的要点
本文主要总结一下 virtualbox 中 Ubuntu 虚拟机使用中的问题,主要包含以下几个部分:
- 几种网络配置的特点
- 虚拟机与主机之间互 ping 要点
- 主机通过 ssh 访问虚拟机常见问题
- 主机与虚拟机之间 ssh 互访的方式
VirtualBox的网络配置
模式 | VM–>Host | VM<–Host | VM1<–>VM2 | VM–>Net/LAN | VM<–Net/LAN | 特点 |
---|---|---|---|---|---|---|
Host-only | 通 | 通 | 通 | 不通 | 不通 | 不可连外网 |
Internal | 不通 | 不通 | 通 | 不通 | 不通 | 只用于虚拟机之间的连接 |
Bridge | 通 | 通 | 通 | 通 | 通 | 全通,但不安全 |
NAT | 通 | 不通 | 不通 | 通 | 不通 | 仅用于单向联网,且虚拟机之间不通 |
NAT Network | 通 | 不通 | 通 | 通 | 不通 | NAT的基础上,虚拟机之间也通了 |
VirtualBox最多可以配置4块网卡,然后根据实际需要来选择启用那个或者那几个网卡。
右键单击下图中下面的第4个联网标识选择启用的网卡(可以启用多个)
或者菜单 “设备” --> “网络” 选择启用的网卡
虚拟机与主机之间互 ping 要点
从上面可以看到,主机要想与虚拟机之间实现互 ping 成功,则可以有以下几个选择
-
NAT + Host-only
-
NAT Network + Host-only,在 1 的基础上还可实现虚拟机之间的通信
-
Bridge,在 2 的基础上,外网还可以访问虚拟机
-
虚拟机启用 Host-only 后,会在主机测多出一个适配器:
以太网适配器 VirtualBox Host-Only Network:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::7518:6fbe:d061:9b47%14
IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : -
虚拟机启用 Host-only 后,会在虚拟机侧多出一个网卡
enp0s8
enp0s8
Link encap:Ethernet HWaddr 08:00:27:fb:e7:a6inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::51d9:2de0:9daf:d6b0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2036 errors:0 dropped:0 overruns:0 frame:0 TX packets:516 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:208656 (208.6 KB) TX bytes:80642 (80.6 KB)
主机通过 ssh 访问虚拟机
-
常见问题: ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused
遇到这个问题,有以下几个原因
- 虚拟机没有安装 openssh-server
- 虚拟机虽然安装了 openssh-server,但是没有开启 sshd 服务
对于没有安装 openssh-server的情况,安装一下就可以了
sudo apt-get install openssh-server
对于没有开启 sshd 服务的情况,开启即可sudo /etc/init.d/ssh start
,如果想停止:sudo /etc/init.d/ssh stop
,需要查询当前是否开启:ps -e | grep ssh
,如果出现2990 ? 00:00:00 sshd
(主要是后面的sshd
),则表示 sshd 服务已开启。
tips:
如果虚拟机是 window,解决方式是一样的。
- 下载安装 openssh
- 桌面–>右键点击电脑—>管理—>服务与应用程序—>服务—>开启(OpenSSH 和 OpenSSH Authentication Agent)
主机与虚拟机之间 ssh 互访的方式
- 主机访问虚拟机
- 在cmd窗口输入
ssh [email protected]
(@前为用户名,@后为虚拟机 ip) - 按 提示输入密码
- 登陆到了虚拟机shell
- 若要退出虚拟机回到主机,使用
exit
- 在cmd窗口输入
- 虚拟机访问主机
- 在shell窗口输入
ssh user@host_ip
(@前为用户名,@后为虚拟机 ip) - 按 提示输入密码
- 登陆到了主机cmd
- 若要退出主机回到虚拟机,使用
exit
- 在shell窗口输入