Я пытаюсь подключиться из системы 10.04 к системе 12.04 через SSH. Как ни странно, правила, 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
применяются системно-глобально.
Примечание: имя /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.conf
12.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
источник
/etc/resolv.conf
и вывод этой командыgrep host /etc/nsswitch.conf
?mtr pangolin
?Ответы:
Принимая во внимание, что
ssh
другие программы, такие какping
golbc resolver для поиска имени хоста (в данном случае «pangolin»),host
ищут имя в DNS напрямую, минуя распознаватель glibc. В этом разница.Однако, учитывая , что Glibc Резольвер на вашей машине, сконфигурированный , чтобы попробовать
dns
послеfiles
, я не могу объяснить , почему распознаватель не удается , гдеhost
успешно.Я встречал такое поведение раньше, когда dnsmasq использовался в качестве локального сервера пересылки имен (https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/998712), но вы не используете такой локальный сервер имен; но, возможно, проблема там и здесь была не в dnsmasq, а в решателе glibc.
источник
Ваш SSH может попытаться разрешить IP6 и тайм-аут, делая это. Если вы не используете IP6, попробуйте отключить IP6
/etc/ssh/ssh_config
, изменив AddressFamily сany
наinet
.источник
Я сталкивался с этим пару раз, и это всегда бросало меня, пока я не вспомнил ограничение шести доменов в списке поиска в resolv.conf.
источник
search
Строка файла содержит более шести доменных имен. Средство распознавания glibc просматривает только первые шесть доменов или 256 символов, в зависимости от того, что меньше. Я предполагаю, чтоhost
утилита не имеет таких ограничений, и что ейhost
удается разрешить имя с седьмым или более поздним расширением имени домена.dns-search
строки, ниdns-domain
строки в одном разделе. Этаdns-domain
опция фактически устарела; все поисковые доменные имена должны быть указаны наdns-search
линии.я получил эту ошибку, поставив строку входа в домен перед 2 строк nameserver случайно. nslookup работал. Wget работал. ssh, scp, rsync не удалось.
исправлено перемещение домена на серверы имен ниже и сохранение resolv.conf мне больше ничего не нужно было
источник
Я знаю, что это древний вопрос, но я добавлю, что сработало для меня.
У меня была такая же проблема, и я обнаружил, что по моему
nsswitch.conf
,mdns
в дополнение кfiles
иdns
. Удалениеmdns4
решило эту проблему для меня.источник
Я столкнулся с проблемой доступа к моему серверу sftp. Пользователь ftp не смог войти в sftp с другого сервера. (Солярис - Опенссш). Я прокомментировал запись «dns» в nsswitch.conf, и проблема была решена.
Спасибо Арун Джанардханан (IBS Software Services)
источник