Kesulitan menggunakan ssh dan Avahi

10

Dipecahkan: pastikan libnss-mdns diinstal!

Saya mengalami masalah menggunakan SSH'ing dari netbook ke desktop saya menggunakan nama host .local. Sering kali, saya harus mengatur ulang router yang saya gunakan, yang mengatur ulang alamat yang diberikannya ke perangkat saya, jadi beberapa saat yang lalu saya mengatur Avahi untuk mengatasi * ini. File /etc/avahi/services/ssh.service adalah file standar yang disalin dari dokumentasi:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!-- See avahi.service(5) for more information about this configuration file -->
<service-group>
    <name replace-wildcards="yes">%h</name>
       <service>
            <type>_ssh._tcp</type>
            <port>22</port>
       </service>
 </service-group>

Ini dulu berfungsi dengan baik, tapi sekarang karena beberapa alasan ketika saya mencoba ssh dari netbook ke desktop saya, saya mendapatkan pesan kesalahan berikut (perhatikan saya mengubah nama host pc saya di output ini):

user@netbook>> ssh pc.local -vvv
OpenSSH_6.2p2 Ubuntu-6ubuntu0.3, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/username/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
ssh: Could not resolve hostname pc.local: Name or service not known

Saya dapat ssh dari netbook ke PC saya ketika saya memasukkan alamat IP secara manual, dan ketika saya sudah mengatur / etc / hosts dengan benar (sehingga daemon pada PC saya berfungsi dengan baik), itu hanya berhenti bekerja ketika saya mencoba untuk gunakan alamat lokal. SSH'ing di arah lain (PC-> netbook) berfungsi dengan baik, bahkan ketika menggunakan nama host .local. Avahi juga tampaknya berfungsi dengan baik:

user@netbook>> avahi-browse -a -t+  
+  wlan0 IPv6 netbook                                  SSH Remote Terminal       local
+  wlan0 IPv6 netbook [<MAC address>]       Workstation                       local
+  wlan0 IPv6 netbook                                  Remote Disk Management local
+  wlan0 IPv4 netbook                                  SSH Remote Terminal       local
+  wlan0 IPv4 netbook [<MAC address>]       Workstation                       local
+  wlan0 IPv4 netbook                                  Remote Disk Management local
+  wlan0 IPv4 pc                                          SSH Remote Terminal       local
+  wlan0 IPv4 pc [<MAC address>]               Workstation                       local
+  wlan0 IPv4 pc                                          Remote Disk Management local
+  wlan0 IPv6 pc                                          SSH Remote Terminal       local
+  wlan0 IPv6 pc [<MAC address>]               Workstation                      local
+  wlan0 IPv6 pc                                          Remote Disk Management local

Netbook menjalankan Lubuntu 13.10; perhatikan bahwa saya memang berubah ke Lubuntu baru-baru ini, dan saya hanya ingat melihat kesalahan ini dengan Lubuntu dan bukan dengan Ubuntu biasa. Desktop saya menjalankan Ubuntu 13.10.

Bantuan apa pun akan dihargai!

* Saya sadar bahwa dapat mengatur router saya untuk secara permanen memberikan alamat yang ditetapkan untuk kedua perangkat, dan saya akan melakukannya jika saya tidak dapat menyelesaikan masalah ini, tetapi saya lebih suka mencoba dan memperbaikinya daripada menyelesaikannya.

ETA: Ping PC dari netbook dengan .local hostname tidak berfungsi (host tidak dikenal).

Sunting 2: Isi dari /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 mdns4_minimal dns [NOTFOUND=return] mdns4
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis
bahwa SeniorGuy
sumber
Saya belum pernah menggunakan DHCP atau Avahi untuk sementara waktu, tetapi tidak bisakah Anda melakukannya saja ssh user@hostname:/folder?
Alex
Apakah tes ping lulus ping pc.local?
user.dz
1
@Alex: Idealnya itulah yang ingin saya lakukan, tetapi seperti yang saya tunjukkan dalam posting setiap kali saya harus mengatur ulang router, yang mengatur ulang alamat yang diberikannya, yang berarti saya akan mengubah / etc / hosts file secara teratur, itulah sebabnya saya mengatur Avahi.
thatSeniorGuy
1
@Sneetsher: Baru saja mencobanya, dan itu tidak: "ping: host pc.local tidak dikenal."
thatSeniorGuy
Menjalankan strace ssh user@foojuga akan menunjukkan bahwa kontak ssh avahi-daemon dengan permintaan untuk menyelesaikan foo, yang waktu habis ... Dalam kasus saya berubah /etc/nsswitch.conf: Dari " hosts: files mdns4_minimal [NOTFOUND=return] dns" menjadi " hosts: files dns mdns4_minimal". Tidak yakin mengapa avahi daemon seharusnya TIDAK meminta server DNS, mungkin harus melakukan sesuatu dengan ketidakcocokan antara DNS multicast dan DNS pada LAN (lihat juga: .LD lokal ... tetap memiliki .localpraktik yang buruk)
David Tonhofer

Jawaban:

11

Yah, *.localtidak terselesaikan.

Begitu seterusnya mesin Klien (Notebook)

  1. Install avahi-dnsconfd

    sudo apt-get install avahi-daemon avahi-dnsconfd avahi-discover avahi-utils
    

    avahi-dnsconfdmendengarkan penerbitan dan meneruskannya ke resolvconf.

  2. Instal libnss-mdns (Pustaka ini tidak ada, Menginstalnya memperbaiki masalah dalam kasus ini)

    sudo apt-get install libnss-mdns
    

    nss-mdns adalah sebuah plugin untuk fungsionalitas GNU Name Service Switch (NSS) dari GNU C Library (glibc) yang menyediakan resolusi nama host melalui DNS Multicast (menggunakan Zeroconf, alias Apple Bonjour / Apple Rendezvous), yang secara efektif memungkinkan resolusi nama dengan Unix umum / Program Linux di domain ad-hoc mDNS .local

  3. Memeriksa /etc/nsswitch.conf

    hosts:     files wins mdns4_minimal dns [NOTFOUND=return] mdns4
    

    Seharusnya mdns4_minimalatau mdns4sebelum [NOTFOUND=return]dan sebelum dnsjika Anda memiliki server DNS yang mengkonfigurasi tekad *.local.

    Hapus winsjika Anda tidak menggunakan winbind / samba untuk menyelesaikan nama host berbagi Windows.

  4. Mulai ulang


Petunjuk debug:

  • Mesin klien (Notebook)

    1. Periksa avahi-dnsconfdstatus layanan

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Jalankan avahi-discover, Desktop Anda harus terdaftar di IPv4 → local → Workstation

      Contoh dalam tangkapan layar mx5adalah PC saya di mana salah-Aspire-5738mesin lain.

      masukkan deskripsi gambar di sini

    3. Lihat apakah Avahi dapat menyelesaikan nama host

      avahi-resolve -4 --name yourdesktop.local
      
    4. Tes ping

      $ ping salah-Aspire-5738.local
      PING salah-Aspire-5738.local (192.168.1.3) 56(84) bytes of data.
      64 bytes from salah-Aspire-5738.local (192.168.1.3): icmp_seq=1 ttl=64 time=2.69 ms
      
  • Mesin server (Desktop) , Jika avahi-discovermesin Klien tidak mencantumkan entri Server.

    1. Konfirmasikan bahwa itu avahi-daemonsudah diinstal

      sudo apt-get install avahi-daemon avahi-dnsconfd avahi-discover avahi-utils
      

      avahi-daemon menyediakan layanan penerbitan.

    2. Periksa status layanannya

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Secara default avahimenerbitkan _workstation._tcplayanan. periksa menggunakan avahi-discoverlokal, jika tidak terdaftar coba mengaktifkannya di /etc/avahi/avahi-daemon.conf(hapus #)

      publish-workstation=yes
      

      Kemudian restart daemon:

      sudo service avahi-daemon restart
      

      Periksa lagi.

user.dz
sumber
Sayangnya tidak berhasil. avahi-discoverdan avahi-dnsconfdtidak diinstal di netbook atau PC saya, jadi saya menginstal keduanya. Saya juga diedit /etc/nsswitchagar terlihat seperti sampel yang Anda berikan (sebelumnya hanya entri adalah file dan dns) tetapi keduanya pingdan avahimasih memberikan kesalahan yang sama. Ada saran lagi?
thatSeniorGuy
Arrgh, ini sangat membingungkan.
thatSeniorGuy
Menghapus winstidak membantu. avahi-dnsconf adalah berjalan di netbook (meskipun saya harus menggunakan sudo service avahi-dnsconfddaftar itu, jika tidak serviceakan menanggapi dengan pekerjaan yang tidak diketahui). avahi-discover(ketika dijalankan di netbook saya) tidak daftar desktop (dan dengan benar), baik di bawah judul Workstation dan ssh heading. Namun saya masih tidak bisa melakukan ping atau ssh ke pc menggunakan nama host .local. Saya tetap memeriksa daemon di desktop, dan avahi-daemon sedang berjalan. Ada ide? (btw, terima kasih atas semua saran Anda, saya hargai itu)
thatSeniorGuy
@thatSeniorGuy avahi-resolve -4 --name yourdesktop.local,?
user.dz
1
Tidak terpasang. Menginstalnya, dan berhasil !!!!!!!!! Terima kasih banyak atas bantuannya! Mungkin menambahkan itu ke posting Anda sehingga orang lain dapat melihatnya sedikit lebih mudah?
thatSeniorGuy