VirtualBox中Ubuntu虚拟机SSH连接异常:尝试连接目标VM却始终停留在本地VM
VirtualBox中Ubuntu虚拟机SSH连接异常:尝试连接目标VM却始终停留在本地
嗨,我来帮你排查这个奇怪的SSH问题!这种情况我之前遇到过好几次,大概率是SSH配置或者VM网络/主机名映射出了问题,咱们一步步来分析解决:
1. 先检查本地VM的主机名映射(最常见的坑)
你是不是用ssh username@myserver01这样的命令发起连接的?如果是,先看看myserver02的/etc/hosts文件有没有把myserver01错误映射到本地IP:
- 在myserver02上运行:
cat /etc/hosts - 如果看到类似
127.0.0.1 myserver01或者[myserver02的IP] myserver01的行,直接删掉这一行,或者把IP改成myserver01的正确实际IP。
2. 检查SSH别名配置有没有出错
有时候我们会在~/.ssh/config里配置主机别名,不小心写错就会连错机器:
- 运行命令查看配置:
cat ~/.ssh/config - 如果发现针对
myserver01的配置块里,HostName写的是127.0.0.1或者myserver02的IP,把它改成myserver01的实际IP就行。比如:Host myserver01 HostName 192.168.56.101 # 这里改成myserver01的真实IP User yourusername
3. 用IP直接连接,定位问题根源
跳过主机名,直接用myserver01的实际IP发起SSH连接试试:
ssh username@[myserver01的实际IP]
- 如果用IP能正常连到myserver01,那问题就出在主机名解析上,把前面的hosts或SSH配置改对就行;
- 如果用IP还是连到本地,那就要查VirtualBox的网络和VM服务配置了:
- 确认两个VM的网络模式在同一网段:比如都是NAT模式,或者都是桥接模式,且IP在同一个子网;
- 检查myserver01的SSH服务是否正常:在myserver01上运行
systemctl status sshd,确保服务是active (running)状态; - 检查myserver01的防火墙是否拦截SSH:运行
ufw status,如果没有22/tcp允许规则,执行sudo ufw allow ssh打开。
4. 排查克隆VM导致的UUID/密钥冲突
如果你的两个VM是通过克隆生成的,很可能会出现UUID或SSH主机密钥重复的问题,导致系统识别混乱:
- 检查VM的UUID是否重复:在VirtualBox管理界面选中VM,右键→设置→通用→基本查看UUID;或者用命令行:
如果UUID相同,在VirtualBox里选中myserver01,右键→设置→网络→高级→点击“刷新MAC地址”,UUID会自动更新;VBoxManage showvminfo myserver01 | grep UUID VBoxManage showvminfo myserver02 | grep UUID - 重新生成myserver01的SSH主机密钥:
sudo rm /etc/ssh/ssh_host_* sudo dpkg-reconfigure openssh-server sudo systemctl restart sshd
最后,用IP连接成功后,在远程会话里运行hostname和ip addr show确认是不是myserver01的信息,没问题的话再修复主机名映射,之后用ssh username@myserver01就能正常连接啦!
备注:内容来源于stack exchange,提问作者변미담
相关产品推荐
相关产品推荐

