VMware P2V Converter迁移Ubuntu物理机到ESXi失败(网络不可达错误)
这种卡在3%的网络错误确实挺闹心的,我帮你梳理下排查思路和可行的解决办法:
先明确你的问题现象
- 用VMware Converter做Ubuntu物理机转ESXi虚拟机时,进度卡在3%,报错:
"Network is unreachable Network error. Host x.x.x.x key can't be retrieved. (return code 2)"
- 本地能正常SSH连接物理Ubuntu,但ESXi主机本身无法SSH到物理Ubuntu(超时),不过能ping通、用
wget获取物理Ubuntu的HTML内容 - ESXi可以SSH到自身(
ssh root@127.0.0.1),也能正常SSH到ESXi上的Windows测试VM,但就是连不上网络里的其他Linux主机 - 物理Ubuntu的SSH已经配置允许所有主机连接
核心问题分析
能ping通但SSH连不上,说明ICMP协议没问题,但TCP 22端口的连通性存在障碍。结合ESXi能连Windows却连不上Linux的现象,大概率是ESXi的老版本SSH客户端和Ubuntu新SSH服务端的加密套件不兼容,或者Ubuntu端的SSH配置/防火墙有细节限制。
具体解决步骤
1. 先检查Ubuntu物理机的SSH基础配置
登录物理Ubuntu,编辑SSH服务配置文件:
sudo nano /etc/ssh/sshd_config
重点确认以下几项(先改成宽松配置测试,后续再按需收紧):
PermitRootLogin yes(如果你用root用户做迁移,或者改成PermitRootLogin prohibit-password用密钥,但先开密码登录排除问题)PasswordAuthentication yes(暂时开启密码登录,避免密钥验证的干扰)- 确保没有
AllowUsers/DenyUsers规则限制ESXi主机的IP Port 22:如果改过SSH端口,Converter里要对应设置,先保持默认22测试UsePAM yes:避免PAM验证环节出问题
修改后重启SSH服务:
sudo systemctl restart sshd
2. 修复ESXi与Ubuntu的SSH加密兼容性
ESXi自带的OpenSSH版本通常比较旧,和新Ubuntu的SSH服务端默认加密套件不匹配。登录ESXi的SSH,先尝试用兼容算法连接物理Ubuntu:
ssh -o KexAlgorithms=diffie-hellman-group1-sha1 root@<你的Ubuntu物理机IP>
如果这条命令能成功连上,说明确实是加密套件的问题。接下来在Ubuntu的sshd_config末尾添加兼容的算法:
# 在sshd_config最后追加 KexAlgorithms +diffie-hellman-group1-sha1 Ciphers +aes128-cbc,3des-cbc
重启SSH服务后,再用ESXi测试普通SSH连接,正常后重新运行Converter。
3. 排查Ubuntu的防火墙规则
虽然你说已经允许所有主机连接,但还是要确认防火墙有没有漏掉ESXi的IP:
# 如果用UFW防火墙,先看规则 sudo ufw status # 临时关闭UFW测试 sudo ufw disable # 或者直接查看iptables规则 sudo iptables -L -n
如果关闭防火墙后ESXi能SSH连上,说明是防火墙规则的问题,添加允许ESXi IP访问22端口的规则:
sudo ufw allow from <ESXi主机IP> to any port 22 sudo ufw enable
4. 试试冷克隆模式绕开网络问题
如果热克隆(在线迁移)一直卡,不妨试试冷克隆:把Ubuntu物理机关机,用Converter的引导ISO启动物理机,直接从本地磁盘读取数据进行迁移,完全避开网络SSH的环节。
5. 检查ESXi的网络连通性细节
确认ESXi和物理Ubuntu在同一个VLAN,没有三层交换机/路由器的ACL拦截TCP 22端口。可以在ESXi上用nc命令测试端口是否可达:
nc -zv <Ubuntu物理机IP> 22
如果显示Connection refused,问题在Ubuntu端;如果是timeout,则是网络中间设备的拦截问题。
备注:内容来源于stack exchange,提问作者user3500773




