虚拟机SSH连接失败,多数情况下不是SSH服务本身崩溃,而是网络模式选错或端口转发规则没生效。 先确认虚拟机的网络模式,再检查SSH服务与防火墙,最后配置端口转发并验证主机端口,按这个顺序排查,基本能解决大部分连接问题。
虚拟机SSH连接失败怎么办?先排查这五个高频场景
NAT模式没做端口转发
NAT模式下虚拟机可以访问外网,但主机默认无法直接访问虚拟机的22端口,如果没配端口转发,主机SSH连接会超时或提示拒绝,这是本地开发最常踩的坑。
SSH服务没跑起来
在虚拟机里执行:
systemctl status sshd- 或
systemctl status ssh
如果没启动,运行 sudo systemctl start sshd,并设置开机自启:sudo systemctl enable sshd,检查监听状态:sudo ss -tlnp | grep :22,如果只监听127.0.0.1,需要修改 /etc/ssh/sshd_config 中的 ListenAddress 为 0.0.0。
防火墙拦截了22端口
不同发行版命令不同:
- Ubuntu:
sudo ufw status,放行用sudo ufw allow 22/tcp - CentOS:
sudo firewall-cmd --list-ports,放行用sudo firewall-cmd --add-port=22/tcp --permanent,sudo firewall-cmd --reload - iptables:
sudo iptables -L -n | grep 22
IP地址变了或网卡没启
NAT模式虚拟机IP通常由DHCP分配,重启后可能变化,用 ip addr
查看,VMware NAT下虚拟机IP一般是192.168.x.x,如果网卡没启,执行 sudo dhclient 或 nmcli connection up。
主机端口被占用
如果配置了主机2222端口转发,但2222已被占用,转发会失败,检查命令:
- Windows:
netstat -ano | findstr :2222 - Mac/Linux:
lsof -i :2222
换一个端口如2223重新配置即可。
本地SSH连接虚拟机超时?端口转发配置步骤详解
为什么需要端口转发
NAT模式下,虚拟机在虚拟网络里,主机相当于外网,端口转发把主机端口映射到虚拟机22端口,让主机能通过 0.0.1:主机端口 访问,行业共识认为,这是本地开发最常用的方案,比桥接模式更可控。
VirtualBox端口转发SSH配置步骤(Windows/Mac通用)
- 关闭虚拟机或确保处于关机状态。
- 打开VirtualBox管理器,选中虚拟机,点击设置。
- 进入网络,适配器1选择NAT模式。
- 点击高级,再点端口转发。
- 添加规则:名称ssh,协议TCP,主机端口2222,子系统端口22,子系统IP留空。
- 启动虚拟机,在主机终端执行:
ssh -p 2222 用户名@127.0.0.1。
命令行方式:VBoxManage modifyvm "虚拟机名称" --natpf1 "ssh,tcp,,2222,,22"。
VMware NAT端口映射SSH:对比VirtualBox谁更省事?
VMware Workstation操作路径:编辑 -> 虚拟网络编辑器 -> 选择NAT模式 -> NAT设置 -> 添加,主机端口2222,虚拟机IP(如192.168.xx.xx),虚拟机端口22,描述ssh。
ssh -p 2222 user@127.0.0.1。
| 项目 | VirtualBox | VMware Workstation |
|---|---|---|
| 配置入口 | 设置-网络-高级-端口转发 | 编辑-虚拟网络编辑器-NAT设置 |
| 命令行支持 | VBoxManage modifyvm | vmrun 或 vmware-netcfg |
| 常见坑 | 虚拟机需关机配置 | 需确认NAT网络子网 |
| 适用场景 | 个人开发、轻量测试 | 企业内训、复杂网络实验 |
云服务器SSH端口转发设置费用与适用场景
国内云服务器默认安全组开放22端口,一般不需要端口转发,如果要做本地到云服务器的反向隧道,可用 ssh -R,成本方面,入门轻量服务器年付通常在百元级别,端口转发本身不额外收费,相比本地虚拟机,云服务器有公网IP,配置更直接。
端口转发配置后还是连不上?进阶排查清单
用ssh -v看握手卡在哪
执行 ssh -v -p 2222 user@127.0.0.1,如果卡在 Connection established 但无响应,可能是SSH服务或防火墙。Connection refused,端口转发没生效或SSH没监听。
检查虚拟机内部监听地址
sudo ss -tlnp | grep :22,确保监听 0.0.0:22 或 ::22,如果只有 0.0.1:22,修改 sshd_config 后重启服务。
检查主机防火墙出站规则
有些安全软件会拦截本地回环端口,临时关闭防火墙测试,Windows Defender防火墙:允许应用或功能通过。
检查端口转发规则是否正确
确认主机端口、子系统端口、协议TCP,VMware中虚拟机IP要填对,VirtualBox中子系统IP留空即可。
Q&A:虚拟机SSH连接与端口转发常见疑问
虚拟机SSH连接失败提示Connection refused怎么处理?
先确认SSH服务是否运行:systemctl status sshd,再检查监听端口:ss -tlnp | grep :22,如果服务正常但端口转发后仍拒绝,检查端口转发规则是否启用了TCP,以及主机端口是否被占用。
端口转发和桥接模式哪个更适合本地开发?
桥接模式让虚拟机获得局域网IP,主机可直接访问,但IP可能变化且依赖外部DHCP,端口转发在NAT模式下更稳定,不依赖局域网,适合笔记本频繁切换网络,业内专家指出,本地开发优先用NAT加端口转发。
国内云服务器做SSH端口转发需要备案吗?
备案针对网站域名和80/443等Web服务,SSH端口转发用于运维管理,不涉及网站内容,通常不需要备案,但云厂商安全组需放行对应端口,据工信部公开信息,国内云服务器入网需实名认证,端口转发本身无额外备案要求。
虚拟机SSH连接失败,先查SSH服务与防火墙,再确认网络模式,最后配端口转发。 把主机端口映射到虚拟机22端口,用 ssh -p 测试,多数问题都能定位,端口转发不是玄学,按步骤走就能通。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/730647.html





