news 2026/4/16 16:37:58

解决VMware Ubuntu端口映射SSH连接失败问题:无需重启服务器的快速修复方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决VMware Ubuntu端口映射SSH连接失败问题:无需重启服务器的快速修复方案

解决VMware Ubuntu端口映射SSH连接失败问题:无需重启服务器的快速修复方案

问题背景

在Windows服务器上运行VMware虚拟机,将Ubuntu的SSH端口(22)映射到Windows主机的5099端口,突然无法通过SSH连接。重启整个Windows服务器会影响其他服务,需要找到更优雅的解决方案。

故障现象

  • 通过ssh user@windows_server -p 5099无法连接
  • Windows上显示5099端口正在监听
  • VMware的NAT和DHCP服务状态显示为"Running"

诊断过程

1. 检查端口状态

# 检查5099端口监听状态netstat-ano|findstr :5099# 输出:TCP 0.0.0.0:5099 0.0.0.0:0 LISTENING 416396# 检查22端口监听状态(无输出表示无监听)netstat-ano|findstr :22

2. 检查VMware服务状态

# 检查VMware NAT服务Get-Service"VMware NAT Service"# 检查VMware DHCP服务Get-Service"VMware DHCP Service"# 两者都显示为Running状态

根本原因

虽然VMware的NAT和DHCP服务显示为"Running",但实际上可能存在内部状态异常,导致端口映射失效。这是Windows服务常见的问题——服务管理器显示运行中,但实际功能已失效。

解决方案:三步修复法

第一步:重启VMware网络服务(核心解决方案)

# 以管理员身份运行PowerShell,执行以下命令:Restart-Service"VMware NAT Service"Restart-Service"VMware DHCP Service"# 验证服务状态Get-Service"VMware NAT Service","VMware DHCP Service"

第二步:检查端口映射是否恢复

# 再次检查端口监听状态netstat-ano|findstr :5099# 测试端口连接Test-NetConnection-ComputerName 127.0.0.1-Port 5099

第三步:验证SSH连接

# 从客户端测试连接sshuser@windows_server_ip -p5099

创建自动化修复脚本

为了避免重复手动操作,可以创建PowerShell脚本自动修复:

1. 快速修复脚本 (fix-vmware-net.ps1)

#!/bin/powershellWrite-Host"=== VMware网络服务修复工具 ==="-ForegroundColor CyanWrite-Host"开始时间:$(Get-Date)"-ForegroundColor Yellow# 停止服务Write-Host"停止VMware网络服务..."-ForegroundColor YellowStop-Service"VMware NAT Service"-Force-ErrorAction SilentlyContinueStop-Service"VMware DHCP Service"-Force-ErrorAction SilentlyContinue# 等待确保完全停止Start-Sleep-Seconds 3# 启动服务Write-Host"启动VMware网络服务..."-ForegroundColor YellowStart-Service"VMware DHCP Service"Start-Sleep-Seconds 2Start-Service"VMware NAT Service"# 验证服务状态Write-Host"`n验证服务状态:"-ForegroundColor Green$nat=Get-Service"VMware NAT Service"$dhcp=Get-Service"VMware DHCP Service"Write-Host"VMware NAT Service:$($nat.Status)"-ForegroundColor $(if($nat.Status-eq'Running'){'Green'}else{'Red'})Write-Host"VMware DHCP Service:$($dhcp.Status)"-ForegroundColor $(if($dhcp.Status-eq'Running'){'Green'}else{'Red'})# 测试端口连接Write-Host"`n测试端口连接..."-ForegroundColor Green$port= 5099$test=Test-NetConnection-ComputerName 127.0.0.1-Port$port-WarningAction SilentlyContinueif($test.TcpTestSucceeded){Write-Host"端口$port连接测试成功!"-ForegroundColor Green}else{Write-Host"端口$port连接测试失败!"-ForegroundColor Red}Write-Host"`n修复完成于:$(Get-Date)"-ForegroundColor Cyan

2. 监控脚本 (monitor-vmware-port.ps1)

#!/bin/powershell# 监控VMware端口连接,自动修复$port= 5099$logFile="C:\logs\vmware-port-monitor.log"# 创建日志目录if(-not(Test-Path"C:\logs")){New-Item-ItemType Directory-Path"C:\logs"-Force}# 测试端口连接functionTest-PortConnection{param([int]$Port)try{$result=Test-NetConnection-ComputerName 127.0.0.1-Port$Port-WarningAction SilentlyContinuereturn$result.TcpTestSucceeded}catch{return$false}}# 主监控逻辑$isConnected=Test-PortConnection-Port$port$timestamp=Get-Date-Format"yyyy-MM-dd HH:mm:ss"if(-not$isConnected){$message="$timestamp- 端口$port连接失败,开始修复..."$message|Out-File-FilePath$logFile-AppendWrite-Host$message-ForegroundColor Red# 执行修复&"C:\Scripts\fix-vmware-net.ps1"# 记录修复结果$resultMessage="$timestamp- 修复完成"$resultMessage|Out-File-FilePath$logFile-Append}else{$message="$timestamp- 端口$port连接正常"Write-Host$message-ForegroundColor Green}

预防措施

1. 设置服务自动恢复

# 配置服务失败时自动重启sc.exe failure"VMware NAT Service"reset=86400 actions=restart/5000/restart/10000/restart/30000sc.exe failure"VMware DHCP Service"reset=86400 actions=restart/5000/restart/10000/restart/30000

2. 创建计划任务定期检查

# 创建计划任务每30分钟检查一次$action=New-ScheduledTaskAction-Execute"PowerShell.exe"-Argument"-File `"C:\Scripts\monitor-vmware-port.ps1`""$trigger=New-ScheduledTaskTrigger-Once-At(Get-Date)-RepetitionInterval(New-TimeSpan-Minutes 30)Register-ScheduledTask-TaskName"VMware Port Monitor"-Action$action-Trigger$trigger-Description"监控VMware端口连接状态"

3. 配置备用访问方式

  • 方法A:桥接网络模式
    在VMware中添加第二个网络适配器,配置为桥接模式,让Ubuntu获取局域网IP直接访问

  • 方法B:安装远程桌面
    在Ubuntu内安装xrdp或TeamViewer,提供图形界面访问方式

  • 方法C:串口控制台
    配置Ubuntu的串口控制台,通过VMware的串口连接进行命令行访问

4. 优化端口映射配置建议

推荐配置: 1. 外部端口:使用5000-6000范围内的端口,避免与常见服务冲突 2. 内部IP:固定Ubuntu虚拟机的IP地址(如192.168.1.100) 3. 协议:TCP 4. 描述:清晰标记映射用途(如"Ubuntu-SSH-22")

故障排除流程图

端口未监听

端口在监听

SSH连接失败

检查5099端口状态

检查VMware服务状态

测试本地连接

服务是否运行?

重启VMware NAT/DHCP服务

启动VMware服务

本地连接成功?

检查Windows防火墙

验证SSH连接

问题解决?

✓ 完成

检查虚拟机内部SSH服务

通过VMware控制台登录

启动SSH服务: sudo systemctl start ssh

总结

通过重启VMware NAT和DHCP服务解决端口映射问题,比重启整个Windows服务器更加高效和安全。这种方法:

  1. 快速:只需几秒钟完成
  2. 安全:不影响其他Windows服务
  3. 可自动化:可以通过脚本实现自动监控和修复
  4. 可预防:通过服务自动恢复和定期检查减少故障发生

建议将自动化脚本部署到生产环境中,并设置监控告警,确保VMware虚拟机的远程访问稳定性。


相关资源

  • VMware官方文档:配置NAT网络
  • PowerShell服务管理命令
  • Windows端口转发配置指南
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:44:19

性能测试、负载测试、压力测试之间的区别

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快做测试一年多来,虽然平时的工作都能很好的完成,但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺,所以&#xff…

作者头像 李华
网站建设 2026/4/16 14:01:43

MySQL 精度扩展时候的DDL阻塞对比Oracle

曾经我分析过在MySQL数据库上字段扩位是否只是快速更新元数据的 那次是因为是在实际工作中意外遇到的问题,所以做了实验得出在64以下改变没有问题。64以上的改变也没有问题。但是当从小于64的改到64以上时候则会发生问题。(不是简单的改元数据&#xff…

作者头像 李华
网站建设 2026/4/14 17:13:00

【开题答辩全过程】以 基于JavaEE的超市自助结算平台的开发为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/4/16 12:28:06

网络交换机原理与实践:从二层交换到高级特性的全面解析

前言 在现代计算机网络中,交换机是构建局域网的核心设备。相比于老旧的集线器采用广播模式转发所有数据,交换机通过学习MAC地址、构建交换表、进行智能转发等机制,大幅提升了网络效率和安全性。然而,许多网络管理员和学生对交换机…

作者头像 李华
网站建设 2026/4/16 15:53:35

从入门到精通:Postman和Eolinker的接口测试全攻略

http状态码 每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种: 200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这…

作者头像 李华