host bir host adını çözebilir, ssh değil


15

10.04 sisteminden SSH üzerinden 12.04 sistemine bağlanmaya çalışıyorum. Garip bir şekilde, kuralların resolv.confsadece seçici bir şekilde etkili olduğu görülüyor, bu da beni şaşırtıyor. Gözlemek:

[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.tldaçık searchhat /etc/resolv.confkullanılarak hostadını düzgün bu kuralları verilmiştir aranır. Ancak, SSH istemcisi ile sshyukarıda üretilen hatayı alıyorum. Bu nasıl olabilir? Her zaman isimlendirme kurallarının resolv.confsistem genelinde geçerli olduğu izlenimini edindim.

Not: /etc/hostsadı hiç beyan etmez pangolin. Paket openssh-serverhedef makinede yapılandırılır. Soru sadece bu iki program arasında neden ad çözümlemesinin tutarlı olmadığı ile ilgilidir.

Başka bir not: tam etki alanı adını girdiğinizde komut iyi çalışıyor, yani pangolin.subdomain.domain.tld.

Bu arada istemci makineyi (10.04) yeniden başlattım ve sorun hala devam ediyor. Bir DNS önbellek arka plan programı yüklü değil, bu yüzden yine de bir sorun olmamalı.


Yorumda istenen bilgiler:

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

/etc/resolv.conf, Alan adlarını tutarlı bir şekilde dönüştürdüm:

# 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

... ve tamamı /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

... ve 12.04'teki /etc/network/interfaceskaynak resolv.conf:

# 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.

Not: Alan adlarının dönüşümü ile yapılmıştır sed, bu nedenle çoğaltılan çeşitli dosyalar arasında tutarlıdır.


Yok ~/.ssh/config, ama /etc/ssh/ssh_configkısaca uğruna küçülen küresel olan ( ):

$ 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
Sizin /etc/resolv.confve bu komutun çıktısını gönderebilir misiniz grep host /etc/nsswitch.conf?
Awi

@Awi: ekledi, artı biraz daha.
0xC0000022L

İki soru 1) fqdn kullanıyorsanız amaçlandığı gibi çalışıyor mu? 2) Herhangi bir tuhaflık olup olmadığını görmek için ~ / .ssh / config ve / etc / ssh / ssh_config içeriğini gönderebilir misiniz?
Patrick Regan

@PatrickRegan: İstenen şeyleri soruya düzenleyeceğim. Evet, fqdn ile çalışır :) ... (aynı zamanda soruyu da ayarlayacaktır)
0xC0000022L

@STATUS_ACCESS_DENIED: Tuhaf bir şey görüyor musunuz mtr pangolin?
pl1nk

Yanıtlar:


12

Oysa sshve bu şekilde diğer programlar ping(bu durumda 'pangolin') ana bilgisayar adı bulmak için kullanımı glibc çözümleyici, hostglibc çözümleyicinizi atlayarak doğrudan DNS adını arar. Aradaki fark bu.

Ancak, denemek için yapılandırılmış makinenizde üzerinde olduğunu çözümleyici glibc göz önüne alındığında dnssonra filesnerede çözümleyici neden başarısız, ben açıklayamam hostbaşarır.

Daha önce dnsmasq yerel yönlendirme ad sunucusu olarak kullanıldığını bildirdim (https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/998712) ama böyle bir yerel ad sunucusu kullanmıyorsunuz; ama belki de orada ve burada sorun dnsmasq'ta değil, glibc çözümleyicisindeydi.


Derin ve özlü cevap. Gitme zamanı! Teşekkürler.
0xC0000022L

9

SSH'niz IP6'yı çözmeye çalışabilir ve bunu zaman aşımına uğratabilir. Eğer IP6 kullanmıyorsanız içinde IP6 devre dışı bırakmayı deneyin /etc/ssh/ssh_configdan AddressFamily değiştirerek anyiçin inet.


Bu benim için çalıştı, teşekkürler! Daha önce fark etmedim çünkü diğer tüm sunucular zaten desteklenen ipv6'ya bağlanmaya çalıştım.
mniess

3

Bunu birkaç kez gördüm ve resolv.conf arama listesindeki altı alan kısıtlamasını hatırlayana kadar beni her zaman atar.


1. Bu çok iyi bir nokta. Soru metni, resolv.conf dosyasının bir listesini içerir (her ne kadar bilgileri anonimleştirmek için düzenlenmiş olsa da). Dosyanın searchsatırı altıdan fazla alan adı içeriyor. Glibc çözümleyici, hangisi daha azsa, yalnızca ilk altı alana veya 256 karaktere bakar. hostYardımcı programın böyle bir kısıtlaması olmadığını hostve adı yedinci veya daha sonraki etki alanı adı uzantısıyla çözmeyi başarabildiğini tahmin ediyorum .
jdthood

Ayrıca, / etc / network / arabirimlerinde tek bir stanzada hem bir dns-searchçizgi hem de bir çizgi olmamalıdır dns-domain. dns-domainSeçeneğinin gerçekten kullanımdan kaldırıldı; tüm arama alan adları dns-searchsatırda verilmelidir .
jdthood

3

yanlışlıkla 2 nameserver satırından önce bir etki alanı giriş satırı koyarak bu hatayı aldım. nslookup çalıştı. wget çalıştı. ssh, scp, rsync başarısız oldu.

etki alanını ad sunucularının altına taşıma ve resolv.conf kaydetme düzeltildi. benim için başka hiçbir şey gerekli değildi.


3

Bunun eski bir soru olduğunu biliyorum, ama benim için işe yarayanı ekleyeceğim.

Ben aynı sorunu vardı ve benim, tespit nsswitch.conf, orada mdnsek olarak filesve dns. Kaldırmak mdns4bu sorunu benim için çözdü.


benim için de çalıştı - Ubuntu 16.04
Buddy Palumbo

-1

Sftp sunucuma erişmekte sorun yaşıyordum. Ftp kullanıcısı başka bir sunucudan sftp'ye giriş yapamadı. Solaris - OpenSsh). Ben nsswitch.conf "dns" giriş yorumladı ve sorun çözüldü.

Teşekkürler Arun Janardhanan (IBS Yazılım Hizmetleri)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.