Problemy z używaniem ssh i Avahi

10

Rozwiązane: upewnij się, że libnss-mdns jest zainstalowany!

Mam problem z używaniem SSH'ing z mojego netbooka na pulpit za pomocą .lokalnej nazwy hosta. Co jakiś czas muszę zresetować router, którego używam, co resetuje adresy, które podaje moim urządzeniom, więc jakiś czas temu skonfigurowałem Avahi, aby obejść ten problem *. Plik /etc/avahi/services/ssh.service to standardowy plik skopiowany z dokumentacji:

<?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>

Kiedyś działało dobrze, ale teraz z jakiegoś powodu, gdy próbuję ssh z mojego netbooka na pulpit, pojawia się następujący komunikat o błędzie (uwaga: w tym wyjściu zmieniłem nazwę hosta mojego komputera):

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

Mogę ssh z mojego netbooka na komputer, kiedy ręcznie wpisuję adres IP, a kiedy poprawnie skonfiguruję / etc / hosts (więc demon na moim komputerze działa dobrze), przestaje działać tylko, gdy próbuję użyj adresu lokalnego. SSH'ing w innym kierunku (PC-> netbook) działa dobrze, nawet jeśli używasz .lokalnej nazwy hosta. Avahi również działa dobrze:

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 działa pod kontrolą Lubuntu 13.10; zauważ, że ostatnio zmieniłem na Lubuntu i pamiętam ten błąd tylko w Lubuntu, a nie w zwykłym Ubuntu. Na moim pulpicie działa Ubuntu 13.10.

Każda pomoc będzie mile widziana!

* Wiem, że mogę skonfigurować mój router, aby na stałe podawał ustawione adresy obu urządzeniom, i zrobię to, jeśli nie będę w stanie rozwiązać tego problemu, ale wolę spróbować to naprawić niż obejść.

ETA: Pingowanie komputera PC z netbooka przy użyciu .local nazwa hosta nie działa (nieznany host).

Edycja 2: Zawartość /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
thatSeniorGuy
źródło
Od jakiegoś czasu nie korzystałem z DHCP ani Avahi, ale czy nie możesz po prostu ssh user@hostname:/folder?
Alex
Czy test ping przeszedł pomyślnie ping pc.local?
user.dz
1
@Alex: Idealnie chciałbym to zrobić, ale jak często podkreślałem w poście, muszę zresetować router, który resetuje adresy, które podaje, co oznacza, że ​​zmieniam / etc / hosts pliki regularnie, dlatego skonfigurowałem Avahi.
thatSeniorGuy
1
@Sneetsher: Właśnie wypróbowałem, a nie: „ping: nieznany host pc.local”.
thatSeniorGuy
Uruchomienie strace ssh user@foopokaże także, że ssh kontaktuje się z avahi-demonem z prośbą o rozwiązanie foo, która upłynęła ... W moim przypadku zmieniono na /etc/nsswitch.conf: Z „ hosts: files mdns4_minimal [NOTFOUND=return] dns” na „ hosts: files dns mdns4_minimal”. Nie jestem pewien, dlaczego demon avahi ma NIE pytać serwerów DNS, może być konieczne rozwiązanie problemu niezgodności między DNS multiemisji a DNS w sieci LAN (patrz też: lokalna TLD ... i tak .localjest złą praktyką)
David Tonhofer

Odpowiedzi:

11

Cóż, *.localnie są rozwiązane.

Tak więc na komputerze klienta (notebook)

  1. zainstalować avahi-dnsconfd

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

    avahi-dnsconfdsłucha publikacji i przekazuje je do resolvconf.

  2. Zainstaluj libnss-mdns (brak tej biblioteki, jej zainstalowanie naprawiło problem w tym przypadku)

    sudo apt-get install libnss-mdns
    

    nss-mdns to wtyczka do funkcji GNU Name Service Switch (NSS) biblioteki GNU C (glibc) zapewniająca rozpoznawanie nazw hostów za pośrednictwem Multicast DNS (przy użyciu Zeroconf, alias Apple Bonjour / Apple Rendezvous), skutecznie umożliwiając rozpoznawanie nazw przez wspólny Unix / Programy Linux w domenie mDNS ad-hoc .local

  3. Czek /etc/nsswitch.conf

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

    Powinien mieć mdns4_minimallub mdns4przed [NOTFOUND=return]i przed, dnsjeśli masz serwer DNS, który skonfigurował rozwiązanie *.local.

    Usuń, winsjeśli nie używasz winbind / samba do rozpoznawania nazw hostów Windows.

  4. Restart


Wskazówki dotyczące debugowania:

  • Komputer kliencki (notebook)

    1. Sprawdź avahi-dnsconfdstatus usługi

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Uruchom avahi-discover, Twój pulpit powinien znajdować się na liście w IPv4 → lokalny → Stacja robocza

      Przykładem na zrzucie ekranu mx5jest mój komputer, na którym salah-Aspire-5738znajduje się inna maszyna.

      wprowadź opis zdjęcia tutaj

    3. Sprawdź, czy Avahi może rozpoznać nazwy hostów

      avahi-resolve -4 --name yourdesktop.local
      
    4. Test 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
      
  • Komputer serwera (komputer stacjonarny) , avahi-discoverw przypadku, gdy w komputerze klienta nie ma wpisu serwera.

    1. Potwierdź, że avahi-daemonjest zainstalowany

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

      avahi-daemon świadczyć usługi wydawnicze.

    2. Sprawdź status usługi

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Domyślnie usługa avahipublikowania _workstation._tcp. zaznacz, używając avahi-discoverlokalnie, jeśli nie ma na liście, spróbuj włączyć ją w /etc/avahi/avahi-daemon.conf(usuń #)

      publish-workstation=yes
      

      Następnie uruchom ponownie demona:

      sudo service avahi-daemon restart
      

      Sprawdź ponownie.

user.dz
źródło
Niestety, nie ma szczęścia. avahi-discoveri avahi-dnsconfdnie zostały zainstalowane na moim netbooku lub komputerze, więc zainstalowałem je na obu urządzeniach. Edytowałem również, /etc/nsswitchaby wyglądać jak podany przez Ciebie przykład (wcześniej jedynymi wpisami były pliki i dns), ale oba pingi avahinadal dają ten sam błąd. Jeszcze jakieś porady?
thatSeniorGuy
Arrgh, to jest bardzo kłopotliwe.
thatSeniorGuy
Usunięcie winsnie pomogło.avahi-dnsconf jest uruchomiony na netbooka (choć musiałem użyć sudo service avahi-dnsconfd, aby ją wymienić, inaczej servicezareaguje z nieznanym miejscu pracy). avahi-discover(podczas uruchomienia na moim netbooku) robi lista pulpit (i słusznie), zarówno pod nagłówkiem Workstation i nagłówkiem ssh. Jednak nadal nie mogę pingować ani ssh na komputerze, używając lokalnych nazw hostów. Sprawdziłem demona na pulpicie tak, i avahi-daemon jest uruchomiony. Jakieś pomysły? (przy okazji, dziękuję za wszystkie porady, doceniam to)
żeSeniorGuy
@thatSeniorGuy, avahi-resolve -4 --name yourdesktop.local?
user.dz
1
Nie został zainstalowany Zainstalowałem i działało !!!!!!!!! Dziękuję bardzo za Twoją pomoc! Może dodaj to do swojego postu, aby inni mogli go zobaczyć trochę łatwiej?
thatSeniorGuy