web-dev-qa-db-fra.com

Problème d'utilisation de SSH et d'Avahi

résolu: assurez-vous que libnss-mdns est installé!

Je ne parviens pas à utiliser SSH'ing de mon netbook sur mon bureau en utilisant un nom d'hôte .local. De temps en temps, je dois réinitialiser le routeur que j'utilise, ce qui réinitialise les adresses qu'il attribue à mes périphériques. Il y a quelque temps, j'ai donc configuré Avahi pour résoudre ce problème *. Le fichier /etc/avahi/services/ssh.service est le fichier standard copié à partir de la documentation:

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

Auparavant, cela fonctionnait bien, mais maintenant, pour une raison quelconque, lorsque j'essaie de ssh de mon netbook sur mon bureau, le message d'erreur suivant s'affiche (notez que j'ai changé le nom d'hôte de mon ordinateur dans cette sortie):

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

Je peux passer de mon netbook à mon PC en SSH quand je saisis l'adresse IP manuellement, et quand j'ai configuré correctement/etc/hosts (le démon de mon PC fonctionne bien), il ne fonctionne que utilisez l'adresse .local. SSH dans l'autre sens (PC-> netbook) fonctionne bien, même si vous utilisez un nom d'hôte .local. Avahi semble également fonctionner correctement:

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

Le netbook fonctionne avec Lubuntu 13.10; Notez que j'ai récemment changé pour Lubuntu et que je me souviens seulement d'avoir vu cette erreur avec Lubuntu et non avec Ubuntu. Mon bureau exécute Ubuntu 13.10.

Toute aide serait appréciée!

* Je sais que je peux configurer mon routeur pour qu'il attribue en permanence les adresses définies aux deux périphériques. Je le ferai si je ne parviens pas à résoudre ce problème, mais je préférerais essayer de résoudre ce problème plutôt que de le contourner.

ETA: La commande ping du PC depuis le netbook avec le nom d’hôte .local ne fonctionne pas (hôte inconnu).

Edition 2: Contenu de /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
10
thatSeniorGuy

*.local ne sont pas résolus.

Et ainsi de suite machine client (Notebook)

  1. Installez avahi-dnsconfd

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

    avahi-dnsconfd écoute la publication et les transmet à resolvconfname__.

  2. Installez libnss-mdns (cette bibliothèque était manquante, son installation a résolu le problème dans ce cas)

    Sudo apt-get install libnss-mdns
    

    nss-mdns est un plugin pour la fonctionnalité GNU Name Service Switch (NSS) de la bibliothèque GNU C (glibc) fournissant une résolution du nom d'hôte via DNS multidiffusion (à l'aide de Zeroconf, également appelé Apple Bonjour/Apple Rendezvous), permettant effectivement la résolution de noms par des programmes Unix/Linux communs dans le domaine ad-hoc mDNS .local.

  3. Vérifier /etc/nsswitch.conf

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

    Il devrait avoir mdns4_minimal ou mdns4 avant [NOTFOUND=return] et avant dnssi vous avez un serveur DNS qui a configuré la résolution *.local.

    Supprimez winssi vous n’utilisez pas winbind/samba pour résoudre les noms d’hôte de partage Windows.

  4. Redémarrer


Conseils de débogage:

  • Machine client (Notebook)

    1. Vérifier l'état du service avahi-dnsconfd

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Exécutez avahi-discover. Votre bureau doit figurer dans IPv4 → local → Poste de travail.

      Exemple dans la capture d'écran mx5 est mon PC où salah-Aspire-5738 est une autre machine.

      enter image description here

    3. Voir si Avahi peut résoudre les noms d'hôtes

      avahi-resolve -4 --name yourdesktop.local
      
    4. Test de 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
      
  • Machine serveur (Bureau), Dans le cas où avahi-discover in Client Machine ne répertoriait pas l'entrée Server.

    1. Confirmez que avahi-daemon est installé

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

      avahi-daemon fournit des services de publication.

    2. Vérifier son statut de service

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Par défaut, avahipublie le _workstation._tcp service. vérifiez en utilisant avahi-discover localement, si non répertorié, essayez de l'activer dans /etc/avahi/avahi-daemon.conf (retirez #)

      publish-workstation=yes
      

      Puis redémarrez le démon:

      Sudo service avahi-daemon restart
      

      Revérifier.

10
user.dz