在Ubuntu Server VirtualBox克隆GitHub仓库时遇无法解析主机错误,如何解决?
解决Ubuntu Server(VirtualBox)中git clone无法解析github.com的问题
这个错误fatal: unable to access '...': Could not resolve host: github.com本质是DNS解析失败或虚拟机网络配置异常,以下是针对性的排查和修复步骤:
1. 定位问题根源
- 测试基础网络连通性:执行
ping 8.8.8.8,如果能收到响应,说明虚拟机网络链路正常,问题出在DNS解析;如果ping不通,优先排查VirtualBox网络设置。 - 测试DNS解析:执行
ping github.com,如果提示unknown host,可确认是DNS配置问题。
2. 修复DNS配置
临时生效方案
编辑/etc/resolv.conf添加公共DNS:
sudo nano /etc/resolv.conf
在文件中添加:
nameserver 8.8.8.8 nameserver 8.8.4.4
保存退出后,再次执行ping github.com验证解析是否正常,正常后再尝试git clone。
永久生效方案(针对systemd-resolved环境)
如果Ubuntu Server使用systemd-resolved服务,/etc/resolv.conf通常是软链接,需修改服务配置:
sudo nano /etc/systemd/resolved.conf
取消DNS行的注释,修改为:
DNS=8.8.8.8 8.8.4.4
保存后重启服务:
sudo systemctl restart systemd-resolved
3. 检查VirtualBox网络设置
- 确认虚拟机网络适配器模式:推荐使用NAT或桥接适配器。NAT模式下VirtualBox会自动转发主机网络;桥接模式下虚拟机会获取与主机同网段的IP。
- 检查虚拟机IP配置:执行
ip addr,确认网卡有有效的IPv4地址(如192.168.x.x),如果没有,执行sudo dhclient重新获取IP。
4. 排查sudo环境变量问题
有时候sudo会重置环境变量,导致DNS配置在sudo上下文不生效:
- 尝试保留当前用户环境变量执行clone:
sudo -E git clone https://github.com/username/repositoryname.git
- 如果需要永久保留sudo的DNS环境,编辑
sudoers文件(必须用visudo避免语法错误):
sudo visudo
找到Defaults env_keep行,添加DNS相关变量:
Defaults env_keep += "RESOLV_CONF DNS_NAMESERVERS"
保存退出后生效。
5. 其他排查点
- 检查防火墙:执行
sudo ufw status,如果防火墙开启,确保允许出站的DNS(UDP 53端口)和HTTPS(TCP 443端口)流量。 - 验证主机网络:确认宿主机能正常访问github.com,如果宿主机也无法访问,先解决宿主机的网络问题。
内容的提问来源于stack exchange,提问作者SeniorBear
相关产品推荐
相关产品推荐

