主机能够解析主机名,ssh不是


14

我正在尝试通过SSH从10.04系统连接到12.04系统。奇怪的是,这些规则resolv.conf似乎只能选择性地生效,这让我感到困惑。观察:

[2] user@mach:~$ ssh pangolin
ssh: Could not resolve hostname pangolin: Name or service not known
[2] user@mach:~$ host pangolin
pangolin.subdomain.domain.tld has address 172.16.7.12

subdomain.domain.tld是在search排队/etc/resolv.conf,并使用host该名称是否正确找遍给出的规则。但是,使用SSH客户端,ssh我会收到上面再现的错误。怎么会这样?我一直给人的印象是,名称解析规则resolv.conf适用于system-global。

注意:/etc/hosts完全不声明名称pangolin。该软件包openssh-server已在目标计算机上配置。问题仅在于为什么这两个程序之间的名称解析不一致。

另一个注意事项:输入完全限定的域名(即)时,该命令运行良好pangolin.subdomain.domain.tld

同时,我重新启动了客户端计算机(10.04),问题仍然存在。没有安装DNS缓存守护程序,因此我认为无论如何都不应该成为问题。


评论中要求的信息:

$ grep host /etc/nsswitch.conf
hosts:          files dns

/etc/resolv.conf,我一致地转换了域名:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 172.16.1.1
nameserver 172.16.1.5
search subdomain.domain1.com domain1.com domain2 domain3.com domain2.ccTLD domain3.net dev.domain1.com sdk.dev.domain1.com

...以及完整内容/etc/nsswitch.conf

$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

...和/etc/network/interfaces,这是resolv.conf12.04中的来源:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 172.16.1.234
        netmask 255.255.0.0
        gateway 172.16.255.254
        dns-nameservers 172.16.1.1 172.16.1.5
        dns-search domain1.com. domain2. domain3.com. domain2.ccTLD. domain3.net. dev.domain1.com. sdk.dev.domain1.com. subdomain.domain1.com.
        dns-domain subdomain.domain1.com.

注意:域名的转换是通过进行的sed,因此在各种复制文件之间保持一致。


没有~/.ssh/config,但是这里是全局的(/etc/ssh/ssh_config),为简洁起见缩小了:

$ grep -v '^#' /etc/ssh/ssh_config |grep -v '^[[:space:]]*$'
Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no

$ mtr pangolin
Name or service not known: Success

1
您可以发布/etc/resolv.conf此命令的输出grep host /etc/nsswitch.conf吗?
Awi 2012年

@Awi:添加了它,还有更多。
0xC0000022L 2012年

两个问题1)如果使用fqdn,它可以按预期工作吗?2)您可以张贴〜/ .ssh / config和/ etc / ssh / ssh_config的内容以查看是否存在任何怪异之处。
Patrick Regan 2012年

@PatrickRegan:我将请求的内容编辑成问题。是的,它可以与fqdn一起使用:) ...(也会在这方面调整问题)
0xC0000022L 2012年

@STATUS_ACCESS_DENIED:您看到任何奇怪的东西mtr pangolin吗?
pl1nk 2012年

Answers:


12

ssh其他程序(例如ping使用glibc解析器)查找主机名(在本例中为“ pangolin”),host则绕过glibc解析器直接在DNS中查找名称。就是这样。

然而,鉴于此,解析器是你的机器,配置试穿的glibc dnsfiles,我无法解释为什么在解析失败host成功。

在将dnsmasq用作本地转发名称服务器(https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/998712)之前,我已经看到过这种行为的报告,但是您没有使用这样的本地名称服务器。但是也许那里和这里的问题不在dnsmasq中,而在glibc解析器中。


深刻而简洁的答案。要走的路!谢谢。
0xC0000022L 2012年

9

您的ssh可能会尝试解析IP6并超时。如果您没有使用IP6,请尝试/etc/ssh/ssh_config通过将AddressFamily从更改为any来禁用IP6 inet


这对我有用,谢谢!我之前没有注意到,因为我尝试连接所有其他服务器都已支持ipv6。
mniess

3

我已经遇到过几次了,直到我记得resolv.conf中搜索列表上的六个域限制,它总是让我失望。


1.这是一个很好的观点。问题文本包括resolv.conf文件的列表(尽管它似乎已经过编辑以匿名化信息)。该文件的search行包含六个以上的域名。glibc解析器仅查看前六个域或256个字符,以较小者为准。我推测该host实用程序没有这种限制,并且可以host成功解析具有第七个或更高版本域名扩展名的名称。
jdthood 2015年

还请注意,在/ etc / network / interfaces中的单个节中不应同时存在dns-search一行和dns-domain一行。该dns-domain选项实际上已被弃用;所有搜索域名都应在线给出dns-search
jdthood

3

我通过将域输入行偶然放在2个名称服务器行之前得到了此错误。nslookup工作。wget工作了。ssh,scp,rsync失败。

将域移动到名称服务器下方并保存了resolv.conf。对我来说,没有其他必要了。


3

我知道这是一个古老的问题,但是我将补充对我有用的内容。

我有同样的问题,发现我的nsswitch.conf,有mdns除了filesdns。删除mdns4为我解决了这个问题。


也为我工作-ubuntu 16.04
Buddy Palumbo

-1

我在访问sftp服务器时遇到麻烦。ftp用户无法从另一台服务器登录到sftp。(Solaris-Openssh)。我评论了nsswitch.conf中的“ dns”条目,此问题已解决。

感谢Arun Janardhanan(IBS软件服务)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.