Ketika saya mencoba SSH ke host di jaringan bernama storage
, saya mendapatkan kegagalan resolusi DNS:
$ ssh storage
ssh: Could not resolve hostname storage: Name or service not known
Tetapi ketika saya menanyakan DNS dengan host, ia berfungsi
$ host storage
storage has address 192.168.20.103
Bagaimana host
bisa menemukan IP tetapi ssh
tidak bisa?
domain-name-system
ssh
jldugger
sumber
sumber
storage
adalah domain tingkat atas langsung di Internet.sto
dan kemudian tekan Tab.Jawaban:
ssh
danhost
menyelesaikan nama-nama mengikuti jalur yang sama sekali berbeda, sehingga tidak mengherankan bahwa mereka kadang-kadang menghasilkan hasil yang berbeda, terutama ketika nama untuk menyelesaikan bukan FQDN (maka saran untuk menggunakan FQDN di mana-mana.)Anda tidak menyebutkan apa pun tentang OS dan konfigurasi sistem Anda, jadi saya harus menjaganya agar tetap umum, dengan memperhatikan Linux: Rincian MacOS agak berbeda, dan Windows bahkan lebih, tetapi konsep umumnya sama.
host
kueri DNS, jadi pada dasarnya ia mencari/etc/resolv.conf
dan menanyakan server yang terdaftar di sana, mungkin melampirkan nama domain jika nama host belum sepenuhnya memenuhi syarat. Ini mengabaikan setiap sumber lain yang mungkin, tetapi berhati-hatilah bahwa hari ini banyak sistem menjalankan server DNS caching lokal (biasanyadnsmasq
) yang membaca/etc/hosts
dan sumber-sumber lain sebelum menanyakan server DNS lain, jadi jikahost
menanyakan server lokal itu, hasil dari/etc/hosts
dapat merangkak masuk.ssh
mengikuti jalannya sendiri. Saya akan menjelaskan apa yangopenssh
ada di Linux, implementasi lainnya berbeda. Pertama ia mencari nama panggilan host yang didefinisikan dalam file config (sistem-lebar/etc/ssh/ssh_config
dan per-pengguna~/.ssh/config
), kemudian mencari sumber lain dalam urutan yang ditentukan olehhosts:
arahan dalam/etc/nsswitch.conf
. Katakan itu sesuatu seperti:ini berarti: lihat
/etc/hosts
lalu minta DNS (/etc/resolv.conf
lagi). Sumber lain yang mungkin adalah usangnis
dannetinfo
layanan, LDAP, direktori aktif, sebut saja mereka.Untuk men-debug kasus khusus Anda, Anda harus mengikuti jalur implementasi yang
ssh
diikuti dan mencari tahu di mana ia terjebak.sumber
/etc/nsswitch.conf
menjadi membaca bermanfaathosts: files dns
untuk saya. Sama seperti catatan tambahan yang menarik, saya telah menyiapkan beberapa Raspberry Pis dengan Raspian Jessie beberapa minggu terakhir, dan mereka semua membutuhkan perubahan ini.