Ubuntu 22.04下Git克隆时SSH主机名解析失败(残留旧DNS搜索域)问题求助
Ubuntu 22.04下Git克隆时SSH主机名解析失败(残留旧DNS搜索域)问题求助
大家好,我最近在Ubuntu 22.04上用Git克隆Bitbucket仓库时碰到了个头疼的小问题,折腾了好一阵才找到根源,特意整理出来分享给大家:
问题现象
执行Git克隆命令:
git clone git@bitbucket.org:some_user/some_rep.git
过程中弹出两条警告:
ssh: Could not resolve hostname bitbucket.org.somehost.local.: Temporary failure in name resolution ssh: Could not resolve hostname bitbucket.org.sh-dev.local.: Temporary failure in name resolution
虽然最后克隆成功了,但这两条警告看着特别闹心——somehost.local和sh-dev.local是我前公司的DNS搜索域,早就不需要了,可系统居然还在自动把它们追加到主机名后面做解析。
排查过程
我一步步排查了系统的网络配置:
- 先检查主机解析规则,
/etc/nsswitch.conf的配置正常:grep hosts /etc/nsswitch.conf # 输出:hosts: files mdns4_minimal [NOTFOUND=return] dns - 查看当前WiFi连接的NetworkManager配置,
ipv4.dns-search是空的,没有残留旧域:nmcli con show myWifiName | grep ipv4.dns # 输出: # ipv4.dns: -- # ipv4.dns-search: -- # ipv4.dns-options: -- # ipv4.dns-priority: 0 - 确认DNS服务是systemd-resolved在运行,进程状态正常:
sudo lsof -i :53 - 查看
/etc/resolv.conf,里面只有本地DNS stub地址和search .,也没发现旧搜索域的痕迹。
后来我注意到,开启前公司的VPN时,systemd-resolved会记录这些旧域被注入到tun0接口,但关闭VPN后,用resolvectl domain查看,所有接口的搜索域里已经找不到它们了——可解析时还是会自动追加。
最终解决方法
最后我想到了SSH的本地配置,打开~/.ssh/config一看,发现全局Host配置里有个CanonicalDomains项,正好包含了那两个旧的搜索域!把这个配置项删掉之后,再执行Git克隆,那些烦人的警告彻底消失了。
备注:内容来源于stack exchange,提问作者not null
相关产品推荐
相关产品推荐

