You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:14:05