Problemi con ssh e Avahi


10

Risolto: assicurati che libnss-mdns sia installato!

Sto riscontrando problemi con l'utilizzo di SSH dal mio netbook al desktop usando un nome host .local. Ogni tanto devo ripristinare il router che utilizzo, che reimposta gli indirizzi che fornisce ai miei dispositivi, così qualche tempo fa ho impostato Avahi per aggirare questo *. Il file /etc/avahi/services/ssh.service è quello standard copiato dalla documentazione:

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

Questo funzionava bene, ma ora per qualche motivo quando provo a ssh dal mio netbook al mio desktop, ricevo il seguente messaggio di errore (nota che ho cambiato il nome host del mio PC in questo output):

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

Posso ssh dal mio netbook al mio PC quando inserisco manualmente l'indirizzo IP e quando ho impostato correttamente / etc / hosts (quindi il demone sul mio PC funziona bene), smette di funzionare solo quando provo a usa l'indirizzo .local. SSH nell'altra direzione (PC-> netbook) funziona bene, anche quando si utilizza un nome host .local. Anche Avahi sembra funzionare bene:

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

Il netbook esegue Lubuntu 13.10; nota che di recente sono passato a Lubuntu e ricordo solo di aver visto questo errore con Lubuntu e non con Ubuntu. Il mio desktop esegue Ubuntu 13.10.

Qualsiasi aiuto sarebbe apprezzato!

* Sono consapevole che può configurare il mio router in modo da fornire in modo permanente indirizzi impostati a entrambi i dispositivi, e lo farò se non riesco a risolvere questo problema, ma preferirei provare a risolverlo piuttosto che aggirarlo.

ETA: il ping del PC dal netbook con il nome host .local non funziona (host sconosciuto).

Modifica 2: Contenuto di /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

Non uso DHCP né Avahi da un po 'di tempo, ma non puoi semplicemente ssh user@hostname:/folder?
Alex,

Il test ping è passato ping pc.local?
user.dz,

1
@Alex: Idealmente è quello che mi piacerebbe fare, ma come ho sottolineato nel post ogni tanto devo resettare il router, che ripristina gli indirizzi che emette, il che significa che cambierei / etc / hosts file regolarmente, motivo per cui ho installato Avahi.
thatSeniorGuy

1
@Sneetsher: L'ho appena provato, e non: "ping: host sconosciuto pc.local".
thatSeniorGuy

L'esecuzione strace ssh user@foomostrerà anche che ssh contatta avahi-daemon con la richiesta di risoluzione foo, che scade ... Nel mio caso è cambiato in /etc/nsswitch.conf: Da " hosts: files mdns4_minimal [NOTFOUND=return] dns" a " hosts: files dns mdns4_minimal". Non sono sicuro del motivo per cui il demone avahi NON dovrebbe chiedere ai server DNS, potrebbe essere necessario fare qualcosa con l'incompatibilità tra DNS e DNS multicast sia sulla LAN (vedi anche: .local TLD ... avendo .localcomunque una cattiva pratica)
David Tonhofer

Risposte:


11

Bene, *.localnon sono risolti.

Quindi sulla macchina client (Notebook)

  1. Installare avahi-dnsconfd

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

    avahi-dnsconfdascolta la pubblicazione e le passa a resolvconf.

  2. Installa libnss-mdns (mancava questa libreria, installandola risolveva il problema in questo caso)

    sudo apt-get install libnss-mdns
    

    nss-mdns è un plugin per la funzionalità GNU Name Service Switch (NSS) della GNU C Library (glibc) che fornisce la risoluzione dei nomi host tramite Multicast DNS (usando Zeroconf, alias Apple Bonjour / Apple Rendezvous), che consente effettivamente la risoluzione dei nomi da parte di Unix comune / Programmi Linux nel dominio mDNS ad hoc .local

  3. Dai un'occhiata /etc/nsswitch.conf

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

    Dovrebbe avere mdns4_minimalo mdns4prima [NOTFOUND=return]e prima dnsse si dispone di un server DNS che ha configurato la risoluzione *.local.

    Rimuovere winsse non si utilizza winbind / samba per risolvere i nomi host di condivisione Windows.

  4. Reboot


Suggerimenti per il debug:

  • Macchina client (Notebook)

    1. Controlla avahi-dnsconfdlo stato del servizio

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Esegui avahi-discover, il desktop dovrebbe essere elencato in IPv4 → locale → Workstation

      Esempio nello screenshot mx5è il mio PC in cui si salah-Aspire-5738trova un'altra macchina.

      inserisci qui la descrizione dell'immagine

    3. Verifica se Avahi è in grado di risolvere i nomi host

      avahi-resolve -4 --name yourdesktop.local
      
    4. Ping test

      $ 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
      
  • Macchina server (desktop) , nel caso avahi-discoverin cui la macchina client non abbia elencato la voce Server.

    1. Conferma che avahi-daemonè installato

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

      avahi-daemon fornire servizi di pubblicazione.

    2. Controlla lo stato del servizio

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Per impostazione predefinita, avahipubblicare il _workstation._tcpservizio. controlla usando avahi-discoverlocalmente, se non elencato prova ad abilitarlo in /etc/avahi/avahi-daemon.conf(rimuovi #)

      publish-workstation=yes
      

      Quindi riavviare il demone:

      sudo service avahi-daemon restart
      

      Controlla di nuovo.


Sfortunatamente sfortunatamente. avahi-discovere avahi-dnsconfdnon sono stati installati sul mio netbook o PC, quindi li ho installati su entrambi. Ho anche modificato /etc/nsswitchper assomigliare all'esempio che hai fornito (in precedenza le uniche voci erano file e DNS) ma entrambe pinge avahiancora dare lo stesso errore. Qualche altro consiglio?
thatSeniorGuy

Arrgh, questo è estremamente sconcertante.
thatSeniorGuy

La rimozione winsnon ha aiutato. avahi-dnsconf è in esecuzione sul netbook (anche se dovevo usarlo sudo service avahi-dnsconfdper elencarlo, altrimenti servicerisponderebbe con un lavoro sconosciuto). avahi-discover(quando viene eseguito sul mio netbook) fa l'elenco sul desktop (e correttamente), sia sotto il titolo Workstation e l'intestazione ssh. Eppure non riesco ancora a eseguire il ping o ssh nel PC utilizzando i nomi host .local. Ho controllato comunque il demone sul desktop ed avahi-daemon è in esecuzione. Qualche idea? (a proposito, grazie per tutti i tuoi consigli, lo apprezzo molto)
thatSeniorGuy

@thatSeniorGuy, avahi-resolve -4 --name yourdesktop.local?
user.dz,

1
Non è stato installato Installato e ha funzionato !!!!!!!!! Grazie mille per il vostro aiuto! Forse aggiungilo al tuo post in modo che altri possano vederlo un po 'più facilmente?
thatSeniorGuy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.