Bagaimana cara mengetahui alamat IP dari beberapa host yang somename
saya bisa ssh
? Jika saya lakukan nslookup
pada host ini dikatakan "tidak ada jawaban". Bagaimana cara ssh
mengatasinya?
Baik penjelasan /etc/hosts
maupun .ssh/config
penjelasan tidak berhasil.
EDIT
Maaf somename
sepenuhnya memenuhi syarat.
ssh somename.somedomain
bekerja, sementara
ping somename.somedomain
dan
nslookup somename.somedomain
jangan
/etc/hosts
atau~/.ssh/config
?somename.local
..local
adalah domain khusus untuk mDNS. Untuk LLMNR Anda bisa menggunakan skrip NMAP ini .Jawaban:
Nslookup adalah program untuk menanyakan server nama domain Internet . Nslookup sangat baik untuk query server DNS tetapi tidak memberikan Anda gambaran keseluruhan ketika datang ke resolusi nama.
Di Linux, resolusi nama biasanya dikontrol oleh NSS yang dikonfigurasikan oleh
/etc/nsswitch.conf
. Secara khusus, konfigurasi ini berisihosts
entri. Sebagai contoh:Dalam entri di atas Anda dapat melihat bahwa hal pertama yang akan ditanyakan
files
diikuti olehdns
, artinya/etc/hosts
akan ditanyakan sebelum DNS. Pilihan lain ada termasuk LDAP , DNS Multicast dan MENANG .Menjawab pertanyaan Anda secara langsung, SSH menyelesaikan nama host ke alamat IP menggunakan NSS (menarik hasil dari berbagai sumber) di mana nslookup hanya menanyakan DNS.
Anda dapat memeriksa untuk melihat IP NSS mana yang menyelesaikan nama host untuk menggunakan getent. Misalnya untuk menyelesaikan
somename
:Juga Dalam kasus SSH Anda dapat mengkonfigurasi informasi spesifik host di
/etc/ssh/ssh_config
dan~/.ssh/config
. Ini bahkan akan memungkinkan Anda menentukan alamat IP untuk nama host, sepenuhnya melewatkan resolusi nama .:Berikut ini memberitahu SSH untuk digunakan
192.168.1.25
untuk keduanyadev
dandev.example.com
. SSH akan menggunakan alamat ini apakah ada nama-nama ini atau tidak sebagai nama DNS untuk IP yang berbeda:sumber
Gunakan bendera verbose (
-v
) darissh
perintah:Outputnya harus mengandung, antara lain, garis yang menunjukkan IP diselesaikan dari server yang Anda hubungkan:
Penyebab paling mungkin
ssh
untuk dapat menyelesaikan nama host yangnslookup
tidak bisa adalah bahwa itu dikonfigurasi dissh
tingkat.Per yang
ssh_config(5)
halaman buku panduan , ada tiga tempat di manassh
terlihat di file config:Salah satu file ini mungkin berisi nama host Anda
somename
(atau pola yang cocok dengan itu) sebagai alias nama host atau IP lain. Sebagai contoh:Silakan merujuk ke
ssh_config(5)
penjelasanHost
danHostName
arahan halaman manual dan kePATTERNS
bagian untuk informasi lebih lanjut.sumber
ssh user@someserver
tampaknya "menyelesaikan"someserver
nama DNS (bahkan jika ini tidak benar-benar terjadi). JikaHost someserver
dikonfigurasi dalam.ssh/config
file, maka mungkin untuk menggunakan perintah ssh persis seperti status OP bahkan jikasomeserver
tidak ada dalam DNS sama sekali.ssh -v somename
menyertakan alamat IP (terlepas darissh_config
entri apa pun ). Jadi ia langsung menjawab pertanyaan "Bagaimana cara mengetahui alamat IP dari beberapa nama host yang dapat saya ssh?", Serta menjadi langkah pertama yang baik untuk menjawab "Bagaimana bisa bahwa somename ssh berfungsi ...?".Philip hampir sampai, tetapi
.ssh/config
pergilah ke rathole yang tidak mungkin Anda konfigurasikan.Perintah ...
... meminta NSS menggunakan
hosts:
garis pencarian dalam/etc/nsswitch.conf
, bukan hanya DNS sepertinslookup
halnya. Kemungkinan lingkungan Unix Anda menggunakan lebih dari satu layanan penamaan; mungkin beberapa jenis integrasi AD.sumber
host
biasanya merupakan bagian dari bind-utils (atau yang setara) dan menyukai keduanyanslookup
dandig
hanya menggunakan DNS. OTOHgetent hosts
(atau mungkinahosts
) melakukan apa yang Anda gambarkan.host
pertanyaan layanan nama lainnya. Setuju itugetent hosts
adalah metode terbaik terbaik untuk menanyakan "setiap layanan nama yang dikonfigurasi".host
adalah DNS-only per halaman manual dan dikonfirmasi oleh pengujian pada sistem yang saya gunakan (CentOS, Ubuntu, FreeBSD, Solaris) serta upstream . Juga lihat (dekat) dupes saya mengomentari Q yang juga mengatakan ini.