Nslookup somename çalışmazken ssh somename nasıl çalışır?


16

somenameYapabileceğim bir ana bilgisayarın IP adresini nasıl bilebilirim ssh? nslookupBu ev sahibi yaparsam "cevap yok" diyor. sshO zaman adını nasıl çözebilirim?


Ne açıklama ne /etc/hostsde .ssh/configişe yaradı.


DÜZENLE

Üzgünüm somenametamamen nitelikli.

ssh somename.somedomain

çalışırken

ping somename.somedomain

ve

nslookup somename.somedomain

yok


12
Listeleniyor mu /etc/hostsveya ~/.ssh/config?
Stephen Kitt

1
Ad, mDNS (Çok Noktaya Yayın DNS) veya LLMNR (Bağlantı Yerel Çok Noktaya Yayın Adı Çözümlemesi) kullanılarak da çözülebilir.
Johan Myréen

.Ssh

1
@Dims Ping yapmaya çalışabilirsiniz somename.local. .localmDNS için ayrılmış özel bir alandır. LLMNR için bu NMAP komut dosyasını kullanabilirsiniz .
Johan Myréen

2
@mckenzm hayır, olmayacak.
Stephen Kitt

Yanıtlar:


31

Nslookup, Internet etki alanı adı sunucularını sorgulayan bir programdır . Nslookup, DNS sunucularını sorgulamak için çok iyidir, ancak ad çözümlemesi söz konusu olduğunda size tüm resmi vermez.

Linux'ta çözünürlük en yaygın olarak yapılandırılan NSS tarafından kontrol edilir /etc/nsswitch.conf. Özellikle, bu yapılandırma bir hostsgiriş içerir . Örneğin:

hosts:          files dns

Yukarıdaki girişi size sorgulanabilir gereken ilk şey olduğunu görebilirsiniz filesardından dns, yani /etc/hostsdaha önceden DNS sorgulanacak. LDAP , Çok Noktaya Yayın DNS ve WINS gibi başka seçenekler de vardır .

Sorunuzu doğrudan yanıtlayan SSH, nslookup öğesinin yalnızca DNS'yi sorguladığı NSS (birden çok kaynaktan sonuçları alarak) kullanarak ana bilgisayar adını bir IP adresine çözümler.

Hangi IP NSS'nin getent kullanarak bir ana bilgisayar adını çözdüğünü kontrol edebilirsiniz. Örneğin çözmek için somename:

getent hosts somename

Ayrıca SSH durumunda size konak belirli bilgileri yapılandırabilir /etc/ssh/ssh_configve ~/.ssh/config. Bu, bir ana bilgisayar adı için bir IP adresi belirtmenize izin verir, tamamen ad çözümlemesini atlar.

Aşağıda SSH'ye 192.168.1.25hem devve için kullanılması bildirilmektedir dev.example.com. SSH, bu adlar farklı bir IP için DNS adları olarak mevcut olsun veya olmasın bu adresi kullanır :

# contents of $HOME/.ssh/config
Host dev dev.example.com
    HostName 192.168.1.25

10

somenameYapabileceğim bir ana bilgisayarın IP adresini nasıl bilebilirim ssh?

Komutun ayrıntılı bayrağını ( -v) sshkullanın:

ssh somename -v

Çıktı, diğer şeylerin yanı sıra, bağlandığınız sunucunun çözümlenmiş IP'sini gösteren bir satır içermelidir:

debug1: Connecting to aur.archlinux.org [5.9.250.164] port 22.

Bu ana bilgisayarda nslookup yaparsam "cevap yok" diyor. sshO zaman adını nasıl çözebilirim?

En olası nedeni sshBir ana makine adını çözümleyememeninnslookup , söz konusu sshdüzeyde yapılandırılmış olmasıdır .

Başına manuel sayfa , üç yer vardır nerede yapılandırma dosyaları için de görünüyor:ssh_config(5)ssh

  1. komut satırı seçenekleri
  2. kullanıcının yapılandırma dosyası (~ / .ssh / config)
  3. sistem genelindeki yapılandırma dosyası (/ etc / ssh / ssh_config)

Bu dosyalardan biri, somenamebaşka bir ana makine adı veya IP takma adı olarak ana makine adınızı (veya onunla eşleşen bir modeli) içerebilir . Örneğin:

# explicit alias of somename to 8.8.8.8 IP
Host somename
    HostName 8.8.8.8

# pattern alias (that obviously matches somename) to another hostname
# that is itself resolved via DNS (and that can be nslookup-ed).
Host *
    HostName anotherhostname

Daha fazla bilgi için lütfen ssh_config(5)manuel sayfa açıklamalarına Hostve HostNameyönergelerine ve PATTERNSbölüme bakın.


Bu yanıt, bir DNS sunucusu tarafından sunucu olmasa bile bir ana bilgisayar adının nasıl tanındığı sorusuna cevap vermez.
Johan Myréen

1
Yanıt ssh user@someserver, someserverDNS adını "çözdüğü" göründüğü çok olası bir senaryodan doğru bir şekilde bahsediyor (bu gerçekleşmese bile). Eğer Host someserveryapılandırılmış .ssh/configdosyası, OP bile devletler tam olarak ssh komutunu kullanmak mümkün olur someserverhiç DNS'de değil.
Fiisch

2
@ JohanMyréen Gönderen ssh -v somename, IP adresini içerir (herhangi bir ssh_configgirişten bağımsız olarak ). Bu yüzden doğrudan "ssh somename nasıl çalışır ...?"
JigglyNaga

4

Philip neredeyse orada, ama .ssh/config yapılandırmanızın muhtemel olmadığı çukurdan .

Komutlar ...

getent hosts somename

... NSS'yi yalnızca DNS yerine hosts:arama satırını kullanarak sorgular . Unix ortamınız birden fazla adlandırma hizmeti kullanıyor olabilir; muhtemelen bir tür AD entegrasyonu./etc/nsswitch.confnslookup


3
O rotaya gittiğimi söyleyemem. Bütünlük için bir "ek" ekledim.
Philip Couling

@PhilipCouling Elbette, ancak "ön-öncesi" de eksik - soru "$ nsloookup'a karşı $ şey" ile ilgili bir soruyu keyfi olarak nasıl çözeceğinizi göstermiyorsunuz.
Zengin

3
Q üzerinde zaten yorumlandığı gibi host, normalde bind-utils (veya eşdeğeri) 'nin bir parçasıdır ve her ikisini de sever nslookupve digyalnızca DNS kullanır. OTOH getent hosts(veya muhtemelen ahosts) tarif ettiğiniz şeyi yapar.
dave_thompson_085

@ dave_thompson_085 Yanlış. hostdiğer ad hizmetlerini sorgular. Kabul etti getent hosts"herhangi yapılandırılan ad hizmetler" sorgusuna en iyi kesin yöntemdir.
Zengin

1
hostman sayfaları başına yalnızca DNS'dir ve kullandığım sistemler (CentOS, Ubuntu, FreeBSD, Solaris) ve yukarı akışta test edilerek onaylanmıştır . Ayrıca ben de söyledim Q yorum (yakın) dupes bakın.
dave_thompson_085
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.