news 2026/9/16 17:46:58

VMware虚拟机SSH连接配置指南:从网络设置到MobaXterm远程登录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMware虚拟机SSH连接配置指南:从网络设置到MobaXterm远程登录

1. 为什么放着VMware自带的终端不用,非要多装一个MobaXterm

先聊一个很多新手会困惑的问题:我明明已经在VMware里装好了Linux系统,也能正常开机登录,为什么教程里都让我再装一个MobaXterm,用SSH连过去操作?直接在虚拟机窗口里敲命令不也一样吗?

一样,也不一样。如果你只是偶尔在虚拟机里执行几条命令,直接在VMware的终端窗口操作完全没问题。但只要你稍微深入一点,就会碰到几个让人抓狂的痛点:复制粘贴。VMware自带的终端窗口里,把Windows里的命令复制进Linux,有时候要按Ctrl+Shift+V,有时候鼠标右键菜单还不一样,不同Linux发行版、不同VMware版本的行为还不一样,非常影响效率。更麻烦的是看日志和调试,终端输出一多,滚动查找、搜索关键字都很难受。还有文件传输,想从Windows往虚拟机里传个安装包,要么用U盘镜像,要么配共享文件夹,折腾半天。

我见过不少刚接触嵌入式开发的朋友,在VMware里装好Ubuntu,然后用屏幕终端去操作imx6ull开发板,结果中文全部显示成乱码。同样的程序在MobaXterm里连上去看,中文显示完全正常。这就是终端环境对字符编码和字体支持差异导致的问题,也是很多人最后下决心换工具的直接原因。

MobaXterm这类SSH客户端解决的核心问题,是把"操作虚拟机"这件事从VMware的图形窗口里解放出来。你用Windows上的MobaXterm通过网络连接虚拟机里的SSH服务,然后在这个远程终端里执行所有命令。这样你获得的好处是:Windows和Linux之间的复制粘贴顺畅了,终端可以无限滚屏、可以搜索、可以多标签页切换,文件拖拽就能上传下载,会话还能保存下来下次一键连接。作为一个十多年天天跟服务器打交道的从业者,我可以负责任地说,远程终端工具是Linux日常操作效率提升最大的一笔投入,没有之一

这套组合的适用人群非常广:刚学Linux的大学生、做嵌入式开发需要交叉编译的工程师、在自己电脑上搭环境做实验的技术爱好者。不管你是用VMware跑Ubuntu、CentOS还是Debian,原理和步骤都是通用的。接下来我会从网络配置这个最容易踩坑的地方开始,把整个流程完整走一遍。

2. 最容易踩坑的其实是虚拟网络配置,不是MobaXterm本身

很多人连不上虚拟机,第一反应是怪MobaXterm设置不对。实际上根据我的经验,超过七成的问题出在VMware的虚拟网络配置上,MobaXterm只是背锅的。所以在讲连接之前,必须先花篇幅把网络这层搞清楚。

2.1 VMware三种网络模式的本质差别

VMware Workstation给虚拟机提供了三种网络模式:桥接模式、NAT模式、仅主机模式。网上教程一大堆,但很多讲得云里雾里。我用人话给你讲清楚本质。

桥接模式(Bridged):虚拟机直接插到你家里的路由器上,和你的Windows电脑是平等关系。你家路由器DHCP会给你Windows分配一个IP,同时也会给虚拟机分配一个同网段的IP。这种模式下虚拟机可以访问外网,局域网里的其他设备也能直接访问虚拟机。但问题在于,如果你多次切换Wi-Fi、换网络环境,虚拟机的IP会因为路由器不同而变化,而且一些校园网、公司网络有MAC地址限制,虚机经常上不了网。

NAT模式(默认):虚拟机躲在Windows后面,Windows充当一个"中转站"。VMware会虚拟出一个内网网段(默认是192.168.x.0),虚拟机用这个网段里的IP,通过Windows的物理网卡转发流量上网。对外部网络来说,虚拟机是"不存在"的,它被隐藏在了Windows后面。这种模式的好处是稳定,不管你Windows是连Wi-Fi还是有线,只要能上网,虚拟机就一定能上网,IP也基本固定不变。坏处是外部设备默认访问不到虚拟机。

仅主机模式(Host-Only):虚拟机只能和Windows通信,不能访问外网。这个模式主要用于纯本地调试、虚拟机之间组网、或者不想让虚拟机联网的场景。

对于绝大多数用MobaXterm连接虚拟机的场景,我强烈推荐用NAT模式。原因是:第一,稳定性最好,不会因为你换了个网络环境就断网;第二,虚拟机可以上网,方便装软件、更新源;第三,IP固定不变,配置一次MobaXterm会话就能一直用。

2.2 我给新手的网段规划建议

VMware安装后的默认NAT网段通常和你的局域网网段没有冲突,但有一种情况会出问题:如果你家里的路由器网段正好是192.168.100.0,而VMware的NAT网段也是192.168.100.0,就可能导致路由混乱。所以建议你装好VMware之后,主动检查并固定NAT网段。

打开VMware Workstation,点击菜单栏的"编辑"→"虚拟网络编辑器"。在这个界面里你会看到VMnet1和VMnet8,其中VMnet8就是NAT模式的虚拟网络。选中VMnet8,看一下下面的子网IP,比如默认可能是192.168.80.0。我个人的习惯是改成172.16.80.0这种不那么容易冲突的网段,子网掩码保持255.255.255.0。

改完网段之后,还要点一下"DHCP设置",看一下起始IP地址和结束IP地址,这个范围决定了虚拟机DHCP自动获取时能拿到的IP。比如起始地址192.168.80.128,结束地址192.168.80.254。了解这个范围的意义在于,如果你想给虚拟机配置静态IP,就要选一个不在这个DHCP分发范围内的地址,避免IP冲突。比如我一般把静态IP设在192.168.80.10这样的低位地址,完美避开DHCP分发的高位段。

还有一点需要特别注意,如果你用的是VMware Workstation Pro,有时候安装后虚拟网络编辑器里的"更改设置"按钮是灰色的,需要以管理员身份运行VMware才能修改。这也是很多人在网上问"VMware 17没有配置和打开选项"的原因之一——你很可能在用非管理员权限运行软件,界面显示会缺一些按钮。

2.3 VMnet1网卡感叹号的常见原因与处理

很多人在Windows的设备管理器或者网络连接里看到VMnet1和VMnet8这两个虚拟网卡,其中VMnet1有时候会带一个黄色感叹号。这个感叹号的出现,九成是因为Windows的系统服务"VMware NAT Service"和"VMware DHCP Service"没有正常运行,或者VMnet1对应的仅主机模式网络没有正确配置。

注意,如果你用的是NAT模式连接虚拟机,VMnet1感叹号其实不影响你干活,因为它对应的是仅主机模式,你压根用不到。真正要确保正常的是VMnet8。VMnet8负责NAT模式的网络通信,如果VMnet8挂了或者被禁用了,就算虚拟机里服务都正常,MobaXterm也连不上。

排查VMnet8是否正常的方法:Windows命令行输入ipconfig,看有没有一个IPv4地址是192.168.80.1(如果你没改网段的话),这个地址被称为网关地址,是虚拟机访问Windows的入口,也是NAT模式下Windows和虚拟机之间通信的关键。如果没有这个地址,建议以管理员身份在命令行里执行net stop vmwarenet start vmware系列命令,或者在Windows服务管理器里重启"VMware NAT Service"和"VMware DHCP Service"这两个服务。实测下来,这招能解决九成以上的虚拟网卡异常问题。

3. Linux系统侧的两个前置准备:SSH服务和固定IP

网络这层打通之后,接下来要看虚拟机里的Linux系统是否做好了"接待"准备。MobaXterm连接虚拟机,本质是SSH客户端连接SSH服务端,所以虚拟机里必须运行着SSH服务。另外如果你不想每次开机IP都变来变去,固定IP这个动作也建议做掉。

3.1 检查并安装SSH服务

现在的Ubuntu Server版安装时默认会开启SSH服务,但Desktop桌面版默认只装了openssh-client,没有装openssh-server。这就导致一个很尴尬的情况:你从虚拟机里可以SSH连别人,但别人连不进来。

你会不会遇到这个问题其实很好判断。在虚拟机终端里执行:

systemctl status ssh

如果提示Unit ssh.service could not be found,那就说明没装。如果是active (running)状态,那恭喜你,说明SSH服务已经在跑了。

没装的话,先更新软件源再安装:

sudo apt update sudo apt install -y openssh-server

装完之后启动服务并设置开机自启:

sudo systemctl enable --now ssh

这里有个细节值得说明:在Ubuntu上服务的名字有时是ssh,有时是sshd。很多教程让你写systemctl status sshd,结果在Ubuntu上报错找不到服务。实际Ubuntu的openssh-server包注册的服务名就叫ssh。而CentOS/RHEL系才叫sshd。这个差别虽然小,但确实能卡住新手很久。

验证SSH端口有没有在监听,执行:

sudo ss -tlnp | grep 22

看到LISTEN 0.4096 *:22或者0.0.0.0:22这样的输出,就说明SSH服务已经在监听所有网卡的22端口了。

3.2 给虚拟机配置固定IP,避免重启后连不上

用DHCP自动获取IP虽然省事,但有个隐患:DHCP租约到期、虚拟机重启、VMware服务重启,都可能让IP变化。想象一下你某天打开MobaXterm保存的会话,点连接却报错connection refused,排查了半天发现是虚拟机IP变了,这个体验实在糟糕。

固定IP的配置方式根据Linux发行版和网络管理工具有所不同。Ubuntu 18.04及以上版本用的是netplan,配置文件在/etc/netplan/目录下。查看一下你的网卡名称:

ip a

通常NAT模式下网卡名为ens33或ens160。然后编辑netplan配置文件,比如/etc/netplan/01-network-manager-all.yaml

sudo vim /etc/netplan/01-network-manager-all.yaml

写入如下内容:

network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.80.10/24 routes: - to: default via: 192.168.80.2 nameservers: addresses: [223.5.5.5, 8.8.8.8]

这里用到的是一个关键IP:192.168.80.2。在VMware的NAT模式下,这个地址是虚拟网络的网关地址。你可以打开VMware的"虚拟网络编辑器",选中VMnet8,点"NAT设置"按钮,看到的"网关IP"就是它。DNS服务器用223.5.5.5是阿里DNS,比默认的DNS解析稳定很多,实测在虚拟机里访问外网速度有明显提升。当然你要用8.8.8.8也行,但国内部分网络环境下解析会比较慢。

配置完了保存退出,执行:

sudo netplan apply

然后确认一下IP是否生效:

ip a show ens33

如果地址变成了192.168.80.10,说明配置成功。这时候建议你顺手测试一下虚拟机的网络连通性:

ping -c 4 223.5.5.5 ping -c 4 www.baidu.com

一个测网关到外网的线路,一个测DNS解析,两个都通说明虚拟机上网功能完全正常。

3.3 防火墙到底要不要关,怎么放行才对

关于防火墙,网上声音很杂。有人让你直接systemctl stop firewalld,有人让你关了iptables,这些做法都是简单粗暴,但代价是牺牲了安全性。在虚拟机的实验环境里这么干问题不大,但如果你以后要管理真实服务器,这个习惯会给你埋雷。

正确的做法是放行SSH端口,而不是整体关掉防火墙。以Ubuntu自带的ufw为例:

sudo ufw allow 22/tcp sudo ufw enable sudo ufw status

看到22/tcp ALLOW IN就说明放行成功。如果是CentOS的firewalld:

sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload sudo firewall-cmd --list-all

用放行端口而不是关防火墙,既保证了安全,又不影响MobaXterm连接,还能让你以后部署Web服务、数据库等应用时习惯更规范。

4. MobaXterm连接虚拟机的完整配置过程

前期准备都做完了,现在进入正题:MobaXterm如何连接虚拟机。

4.1 MobaXterm的下载和中文设置

MobaXterm官网提供免费版和专业版,免费版的Home Edition对个人使用完全够用。很多人卡在官网下载速度慢,这里有个技巧:官网的下载页面有好几个镜像节点,尽量选择欧洲或者亚洲的节点,国内访问速度会快一些。

下载下来是个便携版压缩包,解压就能直接使用,不需要安装。第一次打开看到的是英文界面,不少人的第一反应是找中文设置。MobaXterm的汉化方式和常规软件不太一样,它不是简单的界面语言切换,而是需要下载中文语言包放到指定目录。

中文包的做法是这样的:从官网下载对应版本的语言文件zh_CN.mo,放到MobaXterm安装目录下的lang文件夹(如果不存在就新建一个),重启MobaXterm后进入Settings→General,在Language下拉框里选择中文(Chinese),重启软件就变成中文界面了。注意免费的Home Edition和Professional版的语言包文件不能混用,下载时要看清楚你的版本类型。

不过说句实在话,我自己用了这么多年MobaXterm,界面语言用英文或者中文对操作影响真的不大。核心是你会不会建会话、知不知道那些按钮是干嘛的。甚至有些英文术语翻译成中文后反而不好和网上的教程对应。所以我建议你如果实在不习惯英文界面就汉化,但别为了汉化折腾太长时间,重点还是把连接逻辑搞明白。

4.2 新建SSH会话:关键参数就这么几个

打开MobaXterm,点击工具栏上的"Session"(会话)按钮,在弹出的窗口里选择"SSH"。接下来填几个关键参数:

参数填写内容说明
Remote host192.168.80.10虚拟机的固定IP,不是Windows的IP
Specify usernameubuntu你的虚拟机登录用户名
Port22SSH默认端口,没改过就不用动
Network adapter默认即可保持默认,选不到反而出问题

有些教程会让你勾选"Network adapter"选项去指定网卡,我个人建议新手保持默认。MobaXterm会自动根据你的路由表选择正确的网卡出口,乱指定反而可能导致连不上。

填完之后点击"OK",会看到左侧的会话列表里多了一个条目。双击它发起连接,弹出提示窗口问你是否接受SSH指纹,点击"Accept"(接受),然后输入密码。看到命令行提示符,恭喜你,连接成功了。

如果你和我一样密码里带特殊字符,建议先在Windows的记事本里把密码打出来核对一遍,再粘贴到MobaXterm的密码框里。很多人连接失败的原因很简单,就是密码输错了,反而怀疑配置有问题。

4.3 连接后推荐做的三个设置:日志、字体、快捷键

连上之后只顾着敲命令就浪费了MobaXterm的潜力。我建议花两分钟做三个设置,体验会完全不一样。

第一个设置:自动保存会话日志。点击菜单栏"Settings"→"Configuration",切到"Terminal"选项卡,勾选"Log terminal output"(记录终端输出),设置你想要的日志保存路径。这个功能在你调试程序、查看崩溃日志时价值巨大,即使是凌晨两点出现了问题,第二天翻日志就能还原当时的完整输出。做嵌入式开发调试设备时,这一步几乎是刚需。

第二个设置:调整字体和编码。在MobaXterm终端里右键,选择"Change terminal font"(修改字体),推荐使用ConsolasDejaVu Sans Mono这类等宽字体,字号建议12或14。解决中文乱码的关键是编码设置,右键选择"Change terminal character encoding"(修改终端字符编码),选UTF-8。UTF-8是目前Linux系统默认的编码格式,Windows客户端这边对齐了UTF-8基本不会出现乱码。

第三个设置:定制快捷键。MobaXterm默认的粘贴快捷键是Ctrl+V,但有些时候会被终端程序拦截。为了兼容普通的Linux终端习惯,建议把粘贴快捷键改成Ctrl+Shift+V。在Settings→Keyboard里可以自定义快捷键,改完之后复制粘贴的体验和VMware自带的终端就完全拉开差距了。

5. 连不上的时候,按这个排查顺序找问题

连接失败是最容易让人崩溃的场景,因为报错信息五花八门。我总结了一套从底层到顶层的排查顺序,照着走基本能定位问题。

5.1 第一步:ping不通虚拟机网段

在Windows命令行执行:

ping 192.168.80.1

如果ping不通,说明Windows到VMnet8虚拟网卡这条链路有问题。检查设备管理器里"网络适配器"下有没有VMware Virtual Ethernet Adapter for VMnet8,如果有感叹号,重启VMware相关服务或者重装VMware网络组件。

如果VMnet8能ping通,再ping虚拟机的IP:

ping 192.168.80.10

ping通了就说明Windows到虚拟机的网络链路是通的,问题出在SSH层。ping不通则可能是虚拟机里的静态IP没配好,或者网卡没有启动。回到虚拟机界面执行ip a,确认IP是否还在,网卡up状态是否正常。

这里有一个关键排查点:Windows防火墙有时会拦截ICMP请求,导致ping不通但实际网络是通的。判断方法是看虚拟机里能否ping通Windows的IP,比如ping 192.168.80.1,如果虚拟机到Windows通、Windows到虚拟机不通,那就排查Windows防火墙的入站规则是否允许ICMP。这种情况我见过太多次了,网络互连没问题,纯粹是防火墙挡住了ICMP探测。

5.2 第二步:SSH端口没有响应

网络链路通了,但MobaXterm报"Connection refused"或"Connection timed out",就要检查SSH服务本身。

Connection refused说明虚拟机能收到请求但没有人监听22端口,大概率是openssh-server没装好没启动。Connection timed out则是请求发出去被网络拦截或丢包了,大概率是防火墙挡住了22端口。

在虚拟机里执行:

sudo ss -tlnp | grep 22

如果没看到LISTEN状态,手动启动SSH服务:

sudo systemctl start ssh systemctl status ssh

服务正常但依然超时,去防火墙里检查22端口放行规则,这部分前面章节已经讲过怎么操作了。

5.3 第三步:认证失败和权限问题

到了输入密码这一步报"Access denied"或认证失败,基本就是用户名或者密码错了。Ubuntu桌面版登录输出的用户和SSH登录的用户是同一个,如果记不清,在虚拟机终端里用whoami查看。

有两点需要提醒:第一,Ubuntu默认不允许root用户直接SSH登录,就算你给root设置了密码也连不上,需要在/etc/ssh/sshd_config里添加PermitRootLogin yes才可以。强烈不建议为了省事开这个,日常操作自己创建的普通用户加sudo就够了。第二,如果虚拟机设置了自动登录和锁屏,SSH登录用的密码还是你的用户密码,和锁屏密码是同一个,别输成登录Windows的密码了。

5.4 特殊场景:宿主机无法访问虚拟机里的网站

很多朋友在做Web开发时会遇到一个情况:虚拟机上启动了Nginx服务,在虚拟机里用curl localhost能拿到页面,但在Windows浏览器里访问http://192.168.80.10却打不开。

这个问题的本质是Linux防火墙默认只拦截外部对非放行端口的访问。如果你只放行了22端口,那么80端口的HTTP请求就会被丢弃。处理思路和在3.3节提到的一致,记住一句话:不是关防火墙,而是放行对应的端口

依次放行80、443以及你开发中需要的所有端口。以ufw为例:

sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload sudo ufw status

然后Windows浏览器重新访问,基本就能打开了。

6. 基于这套环境还能做哪些更进阶的事

连接稳定之后,你的虚拟机和Windows这台"双机系统"就算正式组网了。接下来这几个进阶操作,能进一步提升使用体验。

6.1 利用SFTP功能直接在图形界面拖拽文件

MobaXterm左侧的SFTP面板会自动跟随SSH会话展示虚拟机文件系统。你可以直接在Windows桌面把文件拖到SFTP面板里的某个目录,文件自动就上传到虚拟机了;反向操作就是从虚拟机往Windows下载文件。

这个功能比传统的scp命令或者U盘拷贝方便了太多倍。尤其做嵌入式开发时,编译好的固件、需要拷贝进开发板的文件,全部通过这个面板拖拽解决。注意一点,大文件传输时如果网络质量不好,有可能出现断点续传的问题,保险起见超过1GB的文件我还是建议用scp或rsync命令,但日常小文件拖拽完全够用。

6.2 配置端口转发,让外部设备也能访问虚拟机

如果你需要让手机、平板或者其他电脑访问虚拟机里的服务,单纯NAT模式下它们是无法直接访问到虚拟机的。解决办法是在VMware的NAT设置里配置端口转发。

在"虚拟网络编辑器"→VMnet8→"NAT设置"里,点击"添加"端口转发规则。比如把宿主机的8080端口转发到虚拟机的80端口,规则如下:

宿主机端口类型虚拟机地址虚拟机端口
8080TCP192.168.80.1080

配置完成后,外部设备访问Windows的IP:8080,流量就会被转发到虚拟机的80端口。这个技巧在做前后端联调、演示项目时特别好用,等于给虚拟机开了一个受控的对公网入口。

6.3 保存多个虚拟机会话,管理效率翻倍

你以后可能会在同一台VMware上跑多个虚拟机,比如一个Ubuntu做开发、一个CentOS做测试、一个Debian跑服务。MobaXterm的会话管理功能可以保存所有虚拟机的连接信息,每次打开软件点击会话列表就行,不用重新配置。

更高效的做法是按项目创建文件夹分组。右键会话列表区域可以新建文件夹,比如"ARM开发"、"后端学习"、"网络实验",把对应虚拟机会话放在不同文件夹里,找起来一目了然。如果虚拟机数量少,也可以直接用软件顶部工具栏的"+"快速开新会话,少走两级菜单。

结合MobaXterm的多标签页特性,你可以同时开着好几个虚拟机的SSH会话,互相之间随时切换,复制粘贴跨虚拟机内容也非常方便。这种多窗口能力是VMware自带终端完全比不了的。

最后再分享一个内容之外的经验:如果你做的是嵌入式开发,经常需要连接开发板的串口控制台,MobaXterm同样支持串口协议,插上USB转串口设备后在Session里选择Serial即可。这样你就不用再单独装一个串口工具了,一台电脑、一个软件,既能SSH连虚拟机,又能连开发板串口,桌面一下就清爽了很多。

这套"VMware + MobaXterm"的组合,我用了差不多十年,从最早的VMware Workstation 14一路用到现在的17,中途换过别的虚拟机软件、试过WSL,但最终主力方案还是这两个配合使用。稳定、顺手、问题少,网上的排错资料也丰富,至少省了我一半的实验环境维护时间。希望这篇文章能帮你少走一些我当年走过的弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 17:45:01

52单片机无源蜂鸣器音乐播放实现原理与工程实践

简介:本资源是一套面向嵌入式专业本科生的毕业设计完整实现方案,聚焦室内智能园艺场景,基于STC89C52单片机开发全自动浇花系统,涵盖硬件控制、传感器采集、蜂鸣器报警与CX9音乐播放功能,适合作为课程设计、毕设选题及单…

作者头像 李华
网站建设 2026/9/16 17:44:26

从复位到main():STM32链接脚本与启动文件全解析

很多用 CubeMX 的兄弟,点一下生成就能得到一套能跑的工程,从来没想过一个问题:复位之后,CPU 是怎么一步步走到main()的?又是谁告诉链接器把代码放 Flash、把全局变量放 RAM 的?我自己也是在第一次做 IAP Bo…

作者头像 李华
网站建设 2026/9/16 17:44:13

TinyMCE 5.10.3 集成 PowerPaste 实战:解决 Word 粘贴排版错乱

简介:面向TinyMCE 5.10.3的PowerPaste插件资源包,专为需要从Word、Excel等文档复制内容至在线编辑器的开发者准备,解决粘贴后样式丢失、排版错乱等痛点。压缩包仅117KB,共5个文件,包含3个JavaScript脚本(主…

作者头像 李华
网站建设 2026/9/16 17:39:06

OptiScaler:换超分,中端卡拿到高端帧率

OptiScaler:换超分,中端卡拿到高端帧率 【免费下载链接】OptiScaler OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2/XeSS/FSR2 inputs, replaces native upscalers, enables FSR-FG/XeFG on non-FG titles. Supports Nukem mod f…

作者头像 李华
网站建设 2026/9/16 17:38:47

WebView文字选择改造:ActionMode拦截与JSBridge交互实践

简介:面向Android开发者的一套开源源码包,针对WebView组件在网页浏览场景中文字选取范围受限、操作菜单单一的问题,给出了较为完整的增强方案。通过自定义选择器与JavaScript接口,开发者可实现连续或非连续文本的多选,…

作者头像 李华