admin管理员组

文章数量:1530021

我这里讲的都是如何回家后还可以连接公司电脑,且省电、不伤机器的事啊,审核的各位别误会了。

这篇就不要提docker了,两码事。
也不要纠结什么hyperV、virtualBox还是vmware的了,无关紧要。

骚操作记录:

1. 虚拟机网络配置

公司机器A性能好配置高环境复杂,使用体验好,于是总想充分利用。
自己平时工作闲暇时给A机器里安装了Vmware虚拟机软件,然后给虚拟机里安装了多个虚拟机a1,a2……等。他们各自可能有不同的操作系统。
想要让他们各个机器(a1等)启动后可以正常访问外部网络,即正常上网可以吗?
可以,很容易,方法多种。
我使用的是NAT网络模式。
然后a1等机器里可以自由使用wget等命令,防火墙开放端口等自己处理即可。
想要让这些机器组成一个局域网甚至设置固定ip可以吗,有自己的网段,如 192.168.180.1, 192.168.180.2 .....
可以。
不断添加,默认就是这样,当然也可以自己给各个机器指定不同ip
并且这些机器跟A机器是可以互相通信的,具体来说互相ping,互相传输文件还是很容易的。
此时,自己慢慢就会意识到一件事:
自己的虚拟机里想装多少台"电脑"就装多少台,简直是自己创造了一个虚拟世界
接下来可以在这个虚拟世界里大显身手了!

2. 从“宿主机”的视角来看,有什么提升使用体验的方法吗?

很多。如:
虚拟机a1里好不容易安装好的东西和配置好的环境,某天突然报错进不去了怎么办?
vmware的每个虚拟机都有个自有的文件夹(如下图),里面有很多vmem、ram、vmx,vmdk等后缀的文件,顾名思义很容易才想到里面是什么内容,如某文件保存了内存、某文件是硬盘,某文件是配置等。
出了莫名其妙的问题,我现在经常把内存文件删掉,基本上就可以正常开机和进入了。
想想很容易理解,不赘述。
今年多次用这种方法解决了问题,从此,虚拟机终于在我手里变成了一个可用性强,可靠性较高的东西了。

虚拟机经常导致宿主机A太卡怎么办,有什么好点的办法?
好办法很多。

  1. 经过一些摸索,我现在会装很多虚拟机a1~an;而不是像以前一样装一个,然后往里面疯狂配置和安装环境,导致一个虚拟机的配置要求很高,磁盘占用很大。每次一启动就把A机器拖得变卡。我装很多简单的环境,甚至一个虚拟机里只有一个服务,就像实际上我们的服务器那么纯粹,比如a1只装个mysql,a2只装个rabbitmq,a3只装个jenkins服务等。
    然后使用的时候,就可以适当选择自己想要的机器来启动,对A机器的拖累就不会那么明显了。
  2. 安装Linux系统,性能影响较小。比如我用的 CentOS 7 minimal系统镜像安装的。所谓minimal,就是最小的,一个系统装好后”几乎啥都没有“,甚至连vim都没有,可见有多精简了。然后基于它,装需要的东西,负担就不太重。
  3. 给linux安装ssh服务,配置好,然后从外部机器,如虚拟世界外部的A、B……Z等机器访问a1……an,使用ssh方式连接。这样的话就没有太多的画面之类的交互,该做的操作都可以完成,性能也很好。

如果我也要创造一个”虚拟世界“,那么安装那么多机器和系统,那岂不是一遍又一遍重复,很麻烦?

  1. 虚拟机里有个很好的功能,叫克隆。

    利用这个功能,先装好一个基本环境(我就叫它模板机吧),然后多次克隆,然后可以让克隆出来的机器自动获取ip或者修改配置指定ip,让克隆出来的机器正常。我就是通过这样的方式轻易创建了很多机器。(可能你需要注释掉虚拟机的网卡mac地址,从而可以让不同的机器分配到不同的ip; 也可以不使用dhcp手动分配ip)
  2. 模板机在各个节点还可以创建快照,以便后来使用。比如刚装好时候创建一个快照1,然后去掉无用硬件如光驱声卡等配置好vim、wget、lrzsz等创建一个快照2,装好jdk后创建快照3……以后克隆的时候可以选择从最适合的状态克隆。效率和性能兼备,一点多于的都不需要。

以上即可基本解决虚拟机的使用体验问题。细节相关的太多,不提了。

3. 公司的电脑我有没有远程使用的办法?

毕竟辛辛苦苦装了那么多,下班了又不见得想要继续留在公司,回去后又没有使用的办法,难道家里也要搞一台这样的机器?算了吧,两边不同步,烦都烦死了,要是回家后能连上公司的电脑就好了。
有什么远程连接电脑的办法?
windows的话很显然,mstsc不解释,大家都知道。
当然也有 teamviewer、向日葵啥的。一个道理,具体不谈。
当然你可能要问明明我的公司机器没有固定ip啊我回去后都不知道输入点什么去找到它!
你可以使用某些网络软件,比如OpenXXX,这样的话,两边的机器就可以成为局域网关系,然后使用mstsc什么的连接。

有什么改善远程连接电脑体验的办法?
据说teamviewer会频繁提示你是商用,甚至频繁断开,烦死了不考虑。

  1. 但有人说从境外英文网站下载的安装包安装的就是这样,我没有试过,感兴趣的可以试试。
    但每次远程的机器开机或重启后,那原来的编号和密码会不会变化,不知道的话不就不能连接了吗,怎么办?

  2. 用一个向日葵账号,不同机器上都登录,开机自启,关联设备,然后只要登上向日葵账号,就无视什么编号密码直接连接了,体验不错。且只要愿意付费还可以得到更好的体验。
    显然地,只要你能远程连接看到桌面了,还有什么不能做的呢?

  3. 这样的远程连接的弊端是什么,你有没有发现呢?
    比如一旦因为某种原因你机器卡死了、蓝屏了,重启了,突然断电断网了,网络抖动了,都可能对这种连接造成不可逆的”伤害”,因为也许从此刻就丧失了对它的控制权,就此玩完。
    而且就算不出问题,这个机器你可能根本就不敢关闭,因为一旦关闭,也许你的OpenXXX不能开启自启和连接之类的原因,可能你就再也连不上它了。
    久而久之,机器磨损,能源浪费是必然的。

下一部分重点讲这个问题。

4. 有没有更偏向“物理解决”一点的方案?

设想: 万一远程机器卡死怎么办?

我多想有个同事在公司,打个电话给他,行行好帮我按一下重启键。
可是说不定你们都各自正在居家隔离呢?

于是我想,我们能不能远程控制,对电脑进行物理开关机呢??? !!!

于是,激动人心的时刻来了

关键词: 远程开机
毕竟你都能远程开机了,关机就更不是问题了,连上再关就行,不谈。

实际上,远程是可以对电脑进行开机的,注意我这里说的是 远程开机!!!,你没有看错。

用电脑很多年,我也没想明白,它都没开机,还能对我的任何操作做出点反应?

确实可以。

简而言之:
我现在知道的远程开机方式有三种,本质上原理都是一样的:
就是你远程控制一个设备,类似现在智能家居里常有的所谓智能插座那样的,给它连上网,配置好了之后,在远程的手机上可以通过app什么的对它进行开启关闭。然后利用对这个设备的控制,间接触发电脑的开机。
而电脑的远程开机,是需要主板的支持的。

三种简述一下:

  1. 网卡触发开机
  2. AC Recovery 配置即通电触发开机 (实际上网上还有一些正在为此苦恼,不知道为什么自己的电脑一通电就开机,苦寻解决办法。 苦笑脸.jpg)
  3. pci-Express 开机卡触发开机。
    相关方式都很容易搜,我这里只提概念及关键词,不做进一步详述,否则洋洋万字。

整理如下图:

我自己公司里用的普通电脑,亲测成功,这篇文章就是这样的方式敲出来的。

我使用的是Ac Recovery,即通电触发开机的办法,使用了一个以前买天猫精灵搭售的智能插座,摸索了一天多,顺利解决。
值得一提的是,如果你的主板BIOS中设置好了,通电后还是不行的话,你可能要关掉你的windows中的快速启动按电源键的操作设置为“不进行任何操作”。我的是这样,你的不一定是。
经鲁大师检测,我使用的主板信息是:

主板型号 铭瑄 MS-HDZ H311N-V3H
芯片组 100 Series/C230 Series 芯片组 Family - A143
BIOS版本 American Megatrends Inc. 5.12  /  BIOS程序发布日期: 03/07/2019
BIOS的大小 16384 KB
板载设备 视频设备 (启用)

使用的插座大致如下图:

以上即可解决远程开机问题。
到现在为止,远程开机和远程连接基本都解决了,实际上基本上只要愿意将就下,就没有什么问题了。
而且该关机的时间关机就是了,当然不建议直接给插座断电,而是先通过远程"软"关机,然后选择性看是否关闭插座随意。

5.那么,最后还有没有更骚的操作呢???

比如我回家后的电脑是B,公司里的电脑是A,A里面的vmware虚拟机里有很多系统如a1,a2……等。

显然地,我在A里面打开一个shell什么的,直连a1等机器即可。
我都能远程连接A了,当然该做的都可以做了。

那么假如现在不考虑设法使A和B成为局域网情况下的问题(我试了,A和B都开着OpenXXX,A和B并不能ping得通;更别说B和a1了。B通过ssh连a1也更是别想)

那么我要是就想要B可以通过ssh等连接a1怎么办呢,有没有办法呢?
结论:有。

思路:反正我们从B访问不到a1~an,但B肯定是可以访问到A的,毕竟远程连接都看着呢,只是ping不同而已。
那么,如果我们从B能把ssh请求发给A,由A转发给a1~an行不行呢?
感觉好像走得通,但似乎得对网络很精通才行,要不试试看?

此处需结合两个功能来实现:

  1. vmware里面的端口转发功能。可以配置很多条,比如把指向A机器7777端口的请求,都转发到a1的 22端口;A机器8888端口的请求,都转发到a1的 22端口等。
    上个图吧:


    细节略,总之vmware可以这么配置。

然后我在A机器里惊喜地发现:
我不用再输入a1的ip才能连接a1,我输入 A机器的 127.0.0.1:7777(配置的转发端口)就能ssh连接到a1机器。
注意这一步是真正B通过ssh连a1的基础。

  1. 在前述情况下,B机器能不能连接到A机器的7777端口呢,要是能转发,岂不大功告成?
    是的,可以。
    此处有一个重要的概念,叫内网穿透
    我这里用了netapp内网穿透。

    在natapp里给自己申请了一个隧道,TCP的,

    为什么要申请TCP的呢,因为官网这么说:

    所以我就觉得该选TCP。
    natapp的用法和概念不再赘述,总之最终配置了这么一个规则:
    转发tcp,将 xxxx.natappfree:40482 端口的请求 转发到 A机器的 127.0.0.1:7777 (由于前文的配置,实际它又被转发到a1机器里的22端口了)

然后我就在B机器启动了ssh客户端,尝试进行ssh连接:

主机: xxxx.natappfree
端口:40482
user: password 就用a1的,不提。

然后,居然一试就连接成功了!!!

直到此刻,骚操作终于才是到了尽头。

下面上个图,是从B机器里ssh连接a1机器的亲测图:

落幕。


最终,再补充一点:
既然都可以从B连接到a1了,那么不嫌麻烦的话就可以从B连到a2,以此类推。
但是也可以从B连接到a1,把a1当成连接其他a2~an机器的跳板,在a1中ssh连接a2等,这样的话就只配置a1就行了。
这是个思路,很简单。

本文标签: 操作虚拟机远程桌面机器等一系列