「元気なごみ」如何稳定地从另一台电脑使用 SSH 登录 Windows11 上的 VirutualBox 种的一台 Ubuntu 虚拟机?
注意!!!
因为涉及一些防火墙的设置, 可能会带来一些网络安全的隐患, 如果你不确定你正在做什么, 请联系你的网络管理员, 澄清相关概念.
问题背景: 想同时玩 windows 3A 游戏 + 不打断 Linux 服务
标题有点长,但是相对准确地描述了我的需求.很特殊的需求吧.我相信也有很多的变通的手段.
问题本身, 对于我很重要.我家里的网络是 1G 的上下行对等的网络, 所以我很乐意在家里部署一些自用的奇怪的服务.说实话, 还挺稳定的. 另外就是, 我买了个高配的 PC 台式机. 本来是冲着 AI 去的, 但是后来还是玩游戏更多些.说实话, 真牛!台式机的 4070Ti 搭配 27寸 144HZ的高刷 HDR 显示器, 真的是有种重新定义游戏体验的感觉!关于PC和显示器本身, 有兴趣的话,可以看我这篇: 分享我选购的显示器: 4k+27寸+144HZ+HDR400.
后来对 AI 的热情褪去了很多, 或者说对AI的崇拜滤镜过快的消退了吧.毕竟, 看上去再牛的东西, 真到手上, 发现干啥都鸡肋, 还瞎折腾啥呢.不如安安心心打游戏.
其实游戏时间, 也就只有周末和工作日的晚上.大部分时间, 这台PC都是闲置的. 我原来是安装了 Ubuntu的双系统.勉强都能凑合用. 但是有些鸡肋.因为切换到游戏模式时, 就必须重启电脑. 这就导致我无法在这台电脑上部署需要需要相对稳定可靠执行的功能和服务.
我以前在笔记本上折腾过 VirturalBox 虚拟机,但是当时就发现 VirtualBox中的Linux 服务器似乎无法可靠地运行. 我不太确定为啥. 当时没细查, 直接买了个 3W日元左右的 小PC主机刷成 Linux 服务器来用了.笔记本本身,部署一个长久运行的 VirtualBox, 说实话, 场景实在尴尬.
呀呀呀. 废话有点多了. 还是直接说正题吧. 问题本身, 并没有表面看上去那么简单. 将问题独立处理, 都能找到对应方案, 但是放在一起时, 问题就变得有些奇怪了.
问题关键点:
-
Windows 防火墙, 会屏蔽外部访问. 这个细节经常被忽略. 有许多关于从 Host 机器 SSH 访问 VirtualBox 虚拟机的教程, 但是你会发现,那些都没有用. 因为外部机器,连 Host 机器都访问不了, 更别说 Host 机器上的虚拟机了.
-
VirtualBox 的 Bridge 模式的 Network 不稳定.会较高概率报错 “Destination Host Unreachable”. 这个问题, 很诡异. 刚开始时概率性的, 后来就变成一直无法访问. 我不确定是哪里出了问题.或许以后等我硬件知识更进一步, 可以更进一步定位和问答这个问题.
解决方法:
Windows 防火墙, 适当放开对 Private Network 模式的限制.
因为我的机器处于家庭网络内部, 其实在路由器上有硬件防火墙, 直接把 Windows 防火墙关闭, 问题也不大. 但是关闭防火墙后, 右下角老是出一个带大红叉的图标, 看着有些不舒服.所以就适当变通了下.
- 第一步: 将我的PC连接的网络的类型,变更为 “private network”.
注意: 修改防火墙后, 请返回再检查下网络类型.不确定具体是哪一步导致的. 我发现网络修改后, 有时候重新变为 “public” 类型.
- 第二步: 新增一个仅对 private network 生效的 “allow all” 的防火墙规则. 我会把主要步骤截图.其他细节可以参考这里:Windows firewall blocking SSH to secondary subnet. 我设置的和它不完全一样.关键部署截图如下:
将虚拟机网络类型设置为 NAT, 并设置 SSH 相关的端口转发
问题本身不复杂. 之所以这么做, 是因为发现, 修改防火墙规则后, 尝试 ping host 机器, 总是能ping通的. 至于 VirtualBox 借助 Bridge 模式获取的 内网ip, 为何无法稳定地被其他设备访问, 我还是没搞清楚. 所以暂时采用了这个变动的方案.
更多的讨论, 可以参考:How to SSH to a VirtualBox guest externally through a host?
我的设置截图如下:
其他可能有用的设置:
-
如果你想要自己的 PC 台式机, 断电后, 通电也能自动重新启动,请参考: 实用技巧: 家用主机,断电后重新通电, 如何实现自动启动电脑?
-
如果你还想要每次电脑启动后, 能自动启动你的虚拟机; 甚至在 登录windows账户前, 就立即启动. 参考: How do you configure Virtualbox VM to autostart after Windows-10 reboot?
注意: 有一个十分重要的细节.如果使用 Microsoft账户登录的电脑, 最后一步的用户登录框: * 用户名, 保持默认,不要修改. * 密码, 要填自己的 Microsoft账户 的密码. 填电脑快捷登录的 PIN 码, 没有用的.
- 想给 VirtualBox 虚拟机增加磁盘空间的话, 参考:How do I increase the hard disk size of the virtual machine?
-
想让虚拟机直接用上PC的独立显卡, 可以试试这个文章的方法. 我还没有试过,所以不确定有没有用.How to use a GPU in VirtualBox
- 如果是在非windows系统, VirtualBox开启自动启动某个虚拟机,会更方便.参见: Autostart VM on Debian 10.x in “headless” mode?