VMware 虚拟机 SSH 远程连接完全指南

# VMware 虚拟机 SSH 远程连接完全指南

> 适用于 VMware Workstation + Ubuntu 22.04 NAT 网络模式

---

## 📑 目录

- [前言](#前言)
- [环境说明](#环境说明)
- [一、虚拟机网络环境准备](#一虚拟机网络环境准备)
- [二、虚拟机端安装与配置 SSH 服务](#二虚拟机端安装与配置-ssh-服务)
- [三、VMware 端口转发配置](#三vmware-端口转发配置)
- [四、Windows 防火墙放行端口](#四windows-防火墙放行端口)
- [五、客户端连接与测试](#五客户端连接与测试)
- [六、常见问题 FAQ](#六常见问题-faq)
- [七、命令速查手册](#七命令速查手册)
- [结语](#结语)

---

## 前言

在本地开发或学习 Linux 的过程中,我们经常需要在宿主机(Windows)上通过 SSH 连接到 VMware 中的虚拟机。然而,虚拟机默认采用 NAT 网络模式时,外部无法直接访问其 IP。

本文将**从零开始**,手把手教你如何通过 **端口转发** 技术,实现宿主机对 VMware 虚拟机的 SSH 远程连接。即使你没有任何网络基础,按步骤操作也能轻松完成。

---

## 环境说明

| 项目 | 版本 / 配置 |
| :--- | :--- |
| 宿主机操作系统 | Windows 10 / Windows 11 |
| 虚拟机软件 | VMware Workstation 16 / 17 Pro |
| 虚拟机操作系统 | Ubuntu 22.04 LTS |
| 虚拟机网络模式 | NAT 模式(VMnet8) |
| SSH 客户端工具 | XSHELL / FinalShell / PuTTY(任选其一) |

---

## 一、虚拟机网络环境准备

### 1.1 确认虚拟机网络模式

1. 关闭虚拟机(或保持开机状态均可)。
2. 右键虚拟机标签 -> **设置** -> **网络适配器**。
3. 确认勾选 **NAT 模式**(如下图所示)。

> 💡 NAT 模式下,虚拟机通过宿主机共享上网,自身拥有独立的子网 IP(如 `192.168.x.x`)。

### 1.2 查看虚拟机 IP 地址

在虚拟机内打开终端,执行以下命令:

```bash
ip addr
找到 ens33(或 eth0)网卡下的 inet 地址:

text
inet 192.168.xxx.xxx/24
示例: 192.168.253.128

⚠️ 请记录下这个 IP 地址,后续配置端口转发时需要用到。

二、虚拟机端安装与配置 SSH 服务
2.1 安装 OpenSSH Server
Ubuntu 默认未安装 SSH 服务端,需手动安装:

bash
sudo apt update
sudo apt install openssh-server -y
2.2 启动 SSH 服务
bash
sudo systemctl start ssh
2.3 设置开机自启
bash
sudo systemctl enable ssh
2.4 验证服务状态
bash
sudo systemctl status ssh
正常输出应包含 active (running) 字样。

2.5 防火墙放行 22 端口(如已开启 UFW)
检查防火墙状态:

bash
sudo ufw status
如果显示 Status: active,则需要手动放行 22 端口:

bash
sudo ufw allow 22
sudo ufw reload
三、VMware 端口转发配置
这一步是整个方案的核心:将宿主机的某个空闲端口(如 3022)映射到虚拟机的 22 端口。

3.1 打开虚拟网络编辑器
在 VMware 主界面,点击菜单栏 编辑 -> 虚拟网络编辑器。

3.2 选择 NAT 网络
在弹出的窗口中:

选中列表中类型为 NAT 模式 的网络(通常为 VMnet8)。

点击右下角的 更改设置(如需管理员权限)。

确保 NAT 模式 复选框已勾选,且状态为 已启用。

3.3 进入 NAT 设置
点击 NAT 设置 按钮,进入端口转发配置界面。

3.4 添加转发规则
点击 添加 按钮,填写以下信息:

配置项 填写内容 说明
主机端口 3022 宿主机监听端口,可自定义(建议 1024~65535)
虚拟机 IP 地址 192.168.x.x 填写第 1.2 步中查到的虚拟机 IP
虚拟机端口 22 SSH 默认端口,固定不变
描述 Ubuntu SSH 任意备注,方便识别
填写完成后,点击 确定 保存。

3.5 验证配置生效
在 Windows 的 命令提示符(CMD) 中执行:

cmd
telnet 127.0.0.1 3022
✅ 如果窗口变黑或显示 SSH-2.0-OpenSSH_xxx,表示端口转发已生效。

❌ 如果提示 无法打开到主机的连接,请检查 VMware NAT 服务是否运行。

四、Windows 防火墙放行端口
如果上述 telnet 测试不通,或 SSH 客户端连接失败,可能是 Windows 防火墙拦截了 3022 端口。

4.1 添加入站规则
打开 控制面板 -> Windows Defender 防火墙 -> 高级设置。

点击左侧 入站规则 -> 右侧 新建规则。

选择 端口 -> 下一步。

选择 TCP,并填写 特定本地端口 为 3022。

选择 允许连接 -> 下一步。

全部勾选(域、专用、公用)-> 下一步。

输入规则名称(如 VMware SSH Forwarding),点击 完成。

4.2 重启 VMware NAT 服务(可选)
如果配置后仍不通,可尝试重启 NAT 服务:

按 Win + R,输入 services.msc 回车。

找到 VMware NAT Service。

右键 -> 重启。

五、客户端连接与测试
5.1 使用 SSH 客户端连接
以 XSHELL 或 FinalShell 为例,新建会话并填写:

字段 填写内容
服务器 IP / 主机名 127.0.0.1
端口 3022
用户名 你的虚拟机登录用户名
密码 你的虚拟机登录密码
点击 连接 或 测试连接。

5.2 连接成功标志
首次连接会提示保存主机密钥,点击 接受并保存 即可。

成功登录后,终端将显示虚拟机的命令行界面,例如:

text
Welcome to Ubuntu 22.04 LTS
cico@cico-virtual-machine:~$
六、常见问题 FAQ
Q1:虚拟网络编辑器中“添加”按钮是灰色的,无法添加端口转发规则?
原因:未选中正确的 NAT 网络,或 VMnet8 未启用。

解决:

确保选中列表中的 VMnet8(NAT 模式)。

勾选上方 已启用 复选框。

点击 NAT 设置 后,“添加”按钮即可亮起。

Q2:连接时报错 read ECONNRESET?
原因:虚拟机 SSH 服务未安装或未启动。

解决:

bash
sudo apt install openssh-server -y
sudo systemctl start ssh
Q3:连接时报错 Connection refused?
原因:端口转发未生效,或虚拟机 22 端口被防火墙拦截。

解决:

检查 VMware NAT 服务是否运行(services.msc)。

检查虚拟机防火墙:sudo ufw allow 22。

检查 Windows 防火墙是否允许 3022 端口入站。

Q4:telnet 127.0.0.1 3022 不通怎么办?
解决步骤:

确认虚拟机 SSH 服务已启动:sudo systemctl status ssh。

重启 VMware NAT Service。

检查虚拟网络编辑器中 VMnet8 是否处于“已启用”状态。

尝试关闭 Windows 防火墙后再次测试(不建议长期关闭)。

Q5:能否不配置端口转发,直接用虚拟机 IP 连接?
可以。如果宿主机和虚拟机在同一 NAT 网段,可直接填写虚拟机 IP(如 192.168.x.x)+ 端口 22 进行连接。

但这种方法仅限宿主机访问,无法扩展到局域网其他设备。

七、命令速查手册
操作 命令
查看虚拟机 IP ip addr
安装 SSH 服务 sudo apt install openssh-server -y
启动 SSH 服务 sudo systemctl start ssh
设置开机自启 sudo systemctl enable ssh
查看 SSH 状态 sudo systemctl status ssh
开放 22 端口(UFW) sudo ufw allow 22
关闭防火墙(测试用) sudo ufw disable
测试端口转发(Windows CMD) telnet 127.0.0.1 3022
结语
通过以上步骤,你已经成功实现了宿主机通过 127.0.0.1:3022 对 VMware 虚拟机的 SSH 远程连接。

这套方案适用于:

✅ 本地开发与调试

✅ 虚拟机无独立公网 IP 的场景

✅ 多台虚拟机统一通过宿主机端口管理

posted @ 2026-07-30 15:30  卖雨伞的小男孩  阅读(45)  评论(0)    收藏  举报