【虚拟机】不同网络模式下的 Shell 远程连接

使用虚拟机时会遇到的问题

  • 虚拟机与宿主机的相互访问
  • 虚拟机访问外部网络与服务
  • 外部网络环境访问虚拟机的服务

目的

使用不同的虚拟机网络模式来建立 ssh 连接,思考解决上面提到的问题。

环境介绍

系统 :macOS Sierra
虚拟机软件: virtualbox
虚拟机系统: Ubuntu Server 16.04 LTS
网络环境: 路由器拨号上网

这里写图片描述

Virtualbox 的网络模式

Virtualbox 和 VMware 的网络模式应该是一样的,大概分为 NAT、桥接、Host-Only 三大类。

- NAT 桥接 Host-Only
虚拟机 -> 主机 默认不能设置
主机 -> 虚拟机 默认不能设置
虚拟机 -> 其他主机 默认不能设置
其他主机 -> 虚拟机 默认不能设置
虚拟机 -> 虚拟机

桥接模式

它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。

这里写图片描述

所以使用桥接模式来使用虚拟机是最简单的。

这里写图片描述

之后在虚拟机中使用 ifconfig 命令查看本机的 IP 地址
需要注意的是该 IP 地址如果不是和路由器同段 IP 则需要手动设置虚拟机的 IP

# ifconfig

我们知道了虚拟机 IP 之后,我们就可以使用终端程序或 SFTP 类(Xshell、FileZilla 等)程序连接虚拟机了。我们这里是使用系统自带的终端程序来进行连接实验。

$ ssh -p 22 [email protected]

这里写图片描述

在输入正确的密码后,可成功登录虚拟机的 ssh 服务

这里写图片描述

NAT 模式

NAT:Network Address Translation,字面意思是网络地址转换

如果你不在局域网内,只有一个IP,那么NAT模式正适合你。当然如果你在局域网内,NAT模式也未尝不可,不过使用NAT模式后,主机就变成了双网卡:本身的网卡连接Internet或连接拨号的路由器,另一个虚拟网卡VMnet8连接由虚拟机组成的一个虚拟网络。从外部网络来看,无法直接访问这个虚拟网络。虚拟网络则通过本机上的NAT虚拟服务器进行转发访问Internet。

这里写图片描述

NAT 模式下连接虚拟机也非常简单,我所使用的虚拟机软件默认的网络模式也正是 NAT。对于 NAT 网络模式,我们需要做的是为虚拟机做端口转发(映射)。
这里写图片描述

然后通过访问宿主机的 IP 来访问虚拟机,方法和上面提到的一样。

$ ssh -p 8022 [email protected]

这里写图片描述

NAT 模式使用起来非常方便,但是如果该虚拟机需要想外部提供服务,则需要频繁的映射端口,所以在需要向外部提供服务的情况下还是建议桥接模式。

Host-only模式

Host-only模式和NAT一样,也相当于主机双网卡,网络拓扑和NAT也是一样,只是主机不提供NAT功能了,所以虚拟网络只能和主机访问,不能访问Internet。如果需要一个完全隔离的网络环境,则Host-only最合适不过。Host-only相当于使用双绞线直接连接虚拟机和主机,这是最原始的网络结构,当然也是最灵活的。这种情况下虚拟机就不能访问Internet了吗?局域网下的其他机器就不能访问虚拟机上的服务了吗?当然不是。如果我们自己在主机上搭建起我们自己的NAT服务和DHCP服务,那么Host-only其实和NAT是一样的。从下面的示意图也可以看出,Host-only和NAT的唯一区别就在于,主机上少了NAT这个部分。

这里写图片描述

补充

你也许也会遇到下面这些问题,这里列举一些希望可以帮助到你。

如何启用 root 账户

$ sudo passwd root

接着系统会让你建入登录账户的密码,然后设置 root 账户的密码

root 账户不被允许远程登录

# vi /etc/ssh/sshd_config

PermitRootLogin 配置项将原先的without-password修改为 yes
这里写图片描述

重启 ssh 服务

service ssh restart

ssh 无法连接

检查虚拟机上的 ssh服务OpenSSL防火墙设置

猜你喜欢

转载自blog.csdn.net/xiaoping0915/article/details/79433885