[Linux][VM虚拟机]另外一台主机连自己主机的VM虚拟机

今天从工作室休息完回寝室,因为这个学期在学OS ,一同学在弄VM装的CentOS,然后他就遇到了个问题,我顺便就去看了一下,帮着解决了一手,因为之前我也没遇到过这个问题,所以小小的记录一手。

问题背景

北校同学A在自己的主机上打开VM,开了一个虚拟机CentOS 7 ,此时,南校同学B想在他的主机上通过Finalshell连接到A的虚拟机,但是不知道为啥连不上......

解决过程

其实我一开始挺纳闷的,虽然我没用过Finalshell,但是吧我感觉和XShell肯定差不多,这个过程我感觉可以类比于我平常自己的主机上的XShell远程链接我的云服务器,按理来说,直接输入IP和端口,username和password后应该就可以直接连接了,不应该存在问题的,但是既然连接不上,那得想办法解决。

第一个步骤

首先自然是查看连接参数--IP ;端口;username;password是否应为粗心写错了。结果是没有问题,IP直接通过指令即可查看,因为他的是新装的Linux,ssh连接端口自然是22,我就也顺势查看了一下22端口的情况,结果是22端口没有问题

#查看IP
ifconfig
#检查端口占用情况
lsof -i:22

第二个步骤

连接参数都没有问题,那么考虑一下防火墙的因素:因为是外部连接主机内的虚拟机,那么我们得检查虚拟机的防火墙开启情况:检查后的结果发现防火墙是开的,所以此时我第一想法就是认为这个防火墙的原因,所以就关闭了防火墙准备进行测试,结果发现还是连接不上

#查看防火墙开启状态
systemctl status firewalld

#关闭防火墙
systemctl stop firewalld

#关闭防火墙自启动
systemctl disable firewalld

#确保关闭 重启虚拟机
reboot

#再次检查防火墙状态
systemctl status firewalld

第三个步骤(想通原理,找到问题)

好的,经历了上述两个步骤,感觉有点黔驴技穷的感觉,因为我们自己对于linux的研究也就那么点,平常也就用用,没有尝试过远端连主机的Linux。

一般来说,上述两个过程,也是初学者能想到的可能的方法。此时我开始从网络连接方式开始思考,是不是有哪些地方没注意。

首先,我在B同学的主机那里(远程控制),在cmd中和B同学自己的VM虚拟机中都去尝试ping一下A同学的主机和A同学的虚拟机,得到的结果是一致的:

都能ping通A同学的主机,但是都ping不通A同学的虚拟机

此时我的第一想法还是“因为虚拟机对外的网络实际上是依靠主机的,既然能连的上主机,排除了 '因为完全连不上A的主机,所以连不上A的虚拟机'的原因”

刚闪过这个想法,我突然恍然一下,就想到了一个问题:VM虚拟机的网络连接其实是分为三种的 桥接模式 ; NAT模式 ;主机模式,因为我一开始没去看A同学的连接方式,会不会是每个模式的特性问题?

(关于三种连接的区别 可以去看我的另外一篇博客文章Linux下的网络连接三种模式-CSDN博客)

此时我就去看他的连接模式----NAT模式

NAT模式其实是一种和主机共享IP地址的模式  首先虚拟机会占用一个IP但是可以和主机不是同一个网段 主机会生成一个另外一个和虚拟机IP同网段的虚拟的网卡IP 虚拟机可以和这个虚拟IP产生联系 并且可以通过主机IP的代理来和外界获得联系 

也就是说  整个流程中  需要有主机的代理!!无论是发送和接收网络连接信号,其实都是以主机IP作为中转站,然后从上述描述也可以看到,虚拟机IP其实算是一个内部IP,对内部可以访问,但是对外部是隐藏的,或者你可以直接理解为,只能通过代理才能被访问的一个“虚拟的”“假的”IP

那么一切都解释的通了:因为NAT模式,虚拟机的IP是无法被外部访问的,所以B同学的Finelshell无法访问到虚拟机的这个内部IP,所以连接不上

第四个步骤(解决问题)

既然知道问题所在,那么就对应的解决即可。

虚拟机的IP既然只有内部能访问,那么我们实际上只需要连接主机,然后通过主机的代理去连接虚拟机即可。

在VM的虚拟网络编辑器中,提供了这个功能

找到NAT模式  进行NAT设置

在设置里面,我们添加端口转发功能

主机端口---填写一个不常用的端口就行(不要和平常项目或者其他服务冲突的就可以)

虚拟机IP--就填写我们的虚拟机的内部IP(用ifconfig得到的那个)

虚拟机端口--ssh连接一般都是22端口,写22就行

最后,我们在B的Finalshell进行连接的时候,我们要链接的就是IP就是主机IP,端口写上面写的主机端口,这样连接请求就会被主机端口映射代理转发到虚拟机的22端口(IP:22) 这样就能成功连接了。

总结

第一次遇到这个问题,自己尝试解决的过程很头疼但是最终还是解决完成,很有成就感,上述过程和理解思路都是个人想法,因个人知识储备有限,如果上述过程有错误或者不足之处,欢迎大家评论区批评改正!!!

  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 要在虚拟机上安装Linux系统,需要先下载并安装虚拟机软件,如VMware或VirtualBox。然后,从Linux官网下载所需的Linux发行版ISO镜像文件。在虚拟机软件中创建一个新的虚拟机,选择Linux作为操作系统类型,并将下载的ISO镜像文件作为虚拟光驱中的安装介质。接下来,按照安装向导的指示完成Linux系统的安装过程即可。 ### 回答2: 安装 Linux 操作系统是在虚拟机(VM)中运行 Linux 进程的常见做法。首先,需要选择一个合适的虚拟化软件,如 VMware、VirtualBox 或 Hyper-V。接下来,需要从 Linux 官方网站下载所需的 Linux 版本的镜像文件。 在虚拟化软件中创建一个新的虚拟机实例,并指定要使用的硬件资源,如内存、硬盘空间、CPU 核心等。然后,将下载的 Linux 镜像文件加载到虚拟机中,并按照虚拟化软件的界面指导进行安装。 在安装过程中,需要为虚拟机分配足够的存储空间、选择网络连接类型、设定用户名和密码等。一旦安装完成,系统将会在虚拟机中创建一个全新的 Linux 操作环境。 安装完成后,可以在虚拟机中运行 Linux 应用程序,访问互联网,进行开发和测试任务等。虚拟机提供了一个隔离的环境,保护主机系统的安全性,并方便快速创建多个独立的 Linux 实例。 总结:通过在虚拟机中安装 Linux 系统,可以利用虚拟化技术在物理硬件上运行多个独立的操作系统实例,为开发、测试和使用 Linux 提供了更灵活和安全的选择。 ### 回答3: 虚拟机(Virtual Machine,简称VM)是一种创建和运行虚拟计算机环境的技术。在使用VM安装Linux系统时,首先需要选择合适的虚拟机软件,例如VMware Workstation、Oracle VirtualBox等。 安装过程如下: 1. 下载并安装虚拟机软件。根据自己的操作系统选择合适的版本,下载并按照提示进行安装。 2. 下载Linux系统镜像。可以从Linux官方网站下载所需的Linux系统镜像文件(ISO文件)。 3. 在虚拟机软件中创建新的虚拟机。打开虚拟机软件,点击“新建虚拟机”按钮,按照向导选择合适的选项,如系统类型、版本、内存大小等。 4. 安装Linux系统。在新建的虚拟机中,选择刚才下载的Linux系统镜像文件作为安装介质,然后按照安装提示完成安装过程。 5. 配置虚拟机设置。安装完成后,可以根据需要对虚拟机的硬件配置进行调整,例如内存分配、磁盘空间等。 6. 启动虚拟机并登录Linux系统。点击虚拟机软件中的“启动”按钮,等待虚拟机系统加载完成后,在登录界面输入用户名和密码,即可成功登录Linux系统。 通过在VM上安装Linux系统,可以在现有的操作系统上模拟出一个独立的计算机环境,使得我们可以在同一台物理机上同时运行多个不同的操作系统。这为软件开发、系统测试以及学习和研究等提供了便利。同时,VM技术也加强了系统安全性,能够隔离不同的虚拟机,降低了系统被攻击的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZealSinger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值