环境:VirtualBox + Ubuntu 22.04.5 LTS(服务器版,镜像
ubuntu-22.04.5-live-server-amd64.iso),宿主机 Windows。
初始动机
用 VirtualBox 装完 Ubuntu 服务器版后,一直盯着它自带的小黑框操作,字体和窗口大小都不能调,也没有鼠标,复制粘贴一条命令要在心里默念好几遍。
先试了 gpm(General Purpose Mouse)想给终端补上鼠标支持,但光标位置经常错位、响应也慢,用起来更别扭。于是转向 SSH:让 Windows 通过终端连进虚拟机,字体、窗口随便调,复制粘贴也回来了。
操作
阶段一:尝试直接连接
在 Windows PowerShell 里输入:
ssh [用户名]@10.0.2.15其中10.0.2.15是虚拟机的 NAT 网络 IP 地址(写自己的,此处以本人为例)。
注:在 Ubuntu 虚拟机里执行ip a,从enp0s3网卡下找到 inet 行,可以看到虚拟机的 NAT 网络 IP 地址为10.0.2.15/24。
报错:
ssh: connect to host 10.0.2.15 port 22: Connection timed out原因:NAT 模式下,Windows 无法直接访问虚拟机内部 IP(10.0.2.15)。NAT 只允许虚拟机主动连外面(如ping 8.8.8.8),不允许外面主动连虚拟机,入站连接被拦截。
阶段二:尝试桥接模式
思路:改成“桥接模式”,让虚拟机和 Windows 处在同一局域网,直接用 IP 连。
遇到的问题:VirtualBox 设置 → 网络 → 桥接网卡 → “名称”下拉框是空的,选不了网卡。
可能原因:VirtualBox 的网卡驱动没有正确安装,导致无法识别 Windows 的 Wi-Fi 或有线网卡。
尝试解决:运行 VirtualBox 安装程序 → 选择“修复”,然后重启 Windows。预期这样下拉框里会出现 Realtek 或 Wi-Fi 选项。
结果:失败,名称下拉框中依然是空的。当时时间已经很晚,于是放弃了这条路径的探索。
阶段三:尝试 NAT + 端口转发
1. 配置端口转发规则
路径:VirtualBox 主界面 → 选中虚拟机 → 设置 → 网络 → 保持 NAT → 端口转发。添加一条规则:
| 字段 | 填写内容 |
|---|---|
| 名称 | SSH |
| 协议 | TCP |
| 主机IP | 空 |
| 主机端口 | 2222 |
| 子系统IP | 空 |
| 子系统端口 | 22 |
注:主机 IP 和子系统 IP 留空是“监听所有地址”和“自动指向虚拟机默认 IP”的正确写法。
2. 第一次连接(仍然失败)
在 PowerShell 里输入:
ssh [用户名]@127.0.0.1 -p 2222注:127.0.0.1是一个特殊的 IP 地址,叫“本地回环地址”,意思就是“我自己”。
报错:
ssh: connect to host 127.0.0.1 port 2222: Connection refused3. 可能原因
端口转发规则修改后,必须彻底关闭虚拟机再重新启动,规则才会生效。如果只是“保存状态”再恢复,虚拟机不会重新加载网络配置,端口转发不会激活。
4. 解决操作
- 在虚拟机里执行
sudo shutdown -h now(彻底关机)。 - 确认端口转发规则存在。
- 重新启动虚拟机。
5. 第二次连接(终于成功)
在 PowerShell 里重新输入:
ssh [用户名]@127.0.0.1 -p 2222出现提示:
The authenticity of host '[127.0.0.1]:2222' can't be established. Are you sure you want to continue connecting (yes/no)?输入yes,然后输入密码,看到[用户名]@[主机名]:~$,连接成功。
阶段四:收尾
- VirtualBox 主界面:可以随意关掉(点 X),虚拟机仍在后台运行。
- Ubuntu 显示窗口(小黑框):不要点 X 关闭,最小化即可。
- 断开 SSH:在 PowerShell 里输入
exit退出 SSH 连接。 - 彻底关机:在 SSH 连接状态下输入
sudo shutdown -h now。 - 重连:PowerShell 输入
ssh [用户名]@127.0.0.1 -p 2222。
注意:连接一定要在虚拟机开启的状态下。(我犯傻了,指令关掉虚拟机后尝试重连,失败了才突然反应过来(T﹏T))
初稿 2026-07-27
发布 2026-10-11