Problemas para usar ssh y Avahi

10

Resuelto: ¡ asegúrese de que libnss-mdns esté instalado!

Tengo problemas para usar SSH'ing desde mi netbook a mi escritorio usando un nombre de host .local. De vez en cuando, tengo que restablecer el enrutador que uso, lo que restablece las direcciones que proporciona a mis dispositivos, por lo que hace un tiempo configuré Avahi para solucionar esto *. El archivo /etc/avahi/services/ssh.service es el estándar copiado de la documentación:

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

Esto solía funcionar bien, pero ahora, por alguna razón, cuando trato de ssh desde mi netbook a mi escritorio, recibo el siguiente mensaje de error (tenga en cuenta que cambié el nombre de host de mi PC en esta salida):

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

Puedo ingresar ssh desde mi netbook a mi PC cuando ingreso la dirección IP manualmente, y cuando configuro / etc / hosts correctamente (para que el daemon en mi PC funcione bien), solo deja de funcionar cuando intento usa la dirección .local. SSH'ing en la otra dirección (PC-> netbook) funciona bien, incluso cuando se utiliza un nombre de host local. Avahi también parece estar funcionando bien:

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

El netbook ejecuta Lubuntu 13.10; tenga en cuenta que cambié a Lubuntu recientemente, y solo recuerdo haber visto este error con Lubuntu y no con Ubuntu simple. Mi escritorio ejecuta Ubuntu 13.10.

¡Cualquier ayuda sería apreciada!

* Soy consciente de que puedo configurar mi enrutador para proporcionar direcciones establecidas de forma permanente a ambos dispositivos, y lo haré si no puedo resolver este problema, pero preferiría intentar solucionarlo en lugar de solucionarlo.

ETA: Hacer ping a la PC desde la netbook con el nombre de host .local no funciona (host desconocido).

Edición 2: Contenido 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
thatSeniorGuy
fuente
No he usado DHCP ni Avahi por un tiempo, pero ¿no puedes simplemente ssh user@hostname:/folder?
Alex
¿Pasó la prueba de ping ping pc.local?
user.dz
1
@Alex: Idealmente, eso es lo que me gustaría hacer, pero como señalé en la publicación de vez en cuando, tengo que restablecer el enrutador, que restablece las direcciones que proporciona, lo que significa que estaría cambiando / etc / hosts archivos regularmente, por eso configuré Avahi.
thatSeniorGuy
1
@Sneetsher: Acabo de probarlo y no lo hace: "ping: host desconocido pc.local".
thatSeniorGuy
La ejecución strace ssh user@footambién mostrará que ssh contacta a avahi-daemon con la solicitud de resolución foo, que agota el tiempo de espera ... En mi caso cambió en /etc/nsswitch.conf: De " hosts: files mdns4_minimal [NOTFOUND=return] dns" a " hosts: files dns mdns4_minimal". No estoy seguro de por qué se supone que avahi daemon NO debe preguntar a los servidores DNS, es posible que tenga que hacer algo con la incompatibilidad entre DNS de multidifusión y DNS en la LAN (ver también: .local TLD ... tener .locales una mala práctica de todos modos)
David Tonhofer

Respuestas:

11

Bueno, *.localno se resuelven.

Así en la máquina del cliente (portátil)

  1. Instalar en pc avahi-dnsconfd

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

    avahi-dnsconfdescucha la publicación y se los pasa resolvconf.

  2. Instalar libnss-mdns (faltaba esta biblioteca, instalarlo solucionó el problema en este caso)

    sudo apt-get install libnss-mdns
    

    nss-mdns es un complemento para la funcionalidad GNU Name Service Switch (NSS) de la Biblioteca GNU C (glibc) que proporciona resolución de nombre de host a través de DNS de multidifusión (usando Zeroconf, también conocido como Apple Bonjour / Apple Rendezvous), permitiendo efectivamente la resolución de nombres mediante Unix común / Programas de Linux en el dominio ad-hoc mDNS .local

  3. Cheque /etc/nsswitch.conf

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

    Debe tener mdns4_minimalo mdns4antes [NOTFOUND=return]y antes dnssi tiene un servidor DNS que configuró resolver *.local.

    Elimine winssi no está utilizando winbind / samba para resolver nombres de host compartidos de Windows.

  4. Reiniciar


Sugerencias de depuración:

  • Máquina cliente (portátil)

    1. Verificar el avahi-dnsconfdestado del servicio

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Ejecute avahi-discover, su escritorio debe aparecer en IPv4 → local → Estación de trabajo

      Ejemplo en la captura de pantalla mx5es mi PC, donde salah-Aspire-5738hay otra máquina.

      ingrese la descripción de la imagen aquí

    3. Vea si Avahi puede resolver nombres de host

      avahi-resolve -4 --name yourdesktop.local
      
    4. Prueba 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
      
  • Máquina del servidor (escritorio) , en caso avahi-discoverde que la máquina del cliente no enumere la entrada del servidor.

    1. Confirme que avahi-daemonestá instalado

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

      avahi-daemon Brindar servicios de publicación.

    2. Verifique su estado de servicio

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Por defecto avahipublicar _workstation._tcpservicio. compruebe usando avahi-discoverlocalmente, si no está en la lista intente habilitarlo en /etc/avahi/avahi-daemon.conf(eliminar #)

      publish-workstation=yes
      

      Luego reinicia el demonio:

      sudo service avahi-daemon restart
      

      Revisar otra vez.

user.dz
fuente
Sin suerte, lamentablemente. avahi-discovery avahi-dnsconfdno estaban instalados en mi netbook o PC, así que los instalé en ambos. También edité /etc/nsswitchpara que se parezca a la muestra que proporcionó (anteriormente las únicas entradas eran archivos y dns), pero ambas pingy avahitodavía dan el mismo error. ¿Algún consejo más?
thatSeniorGuy
Arrgh, esto es extremadamente desconcertante.
thatSeniorGuy 05 de
La eliminación winsno ayudó. avahi-dnsconf se está ejecutando en el netbook (aunque tuve que usarlo sudo service avahi-dnsconfdpara enumerarlo, de lo contrario servicerespondería con un trabajo desconocido). avahi-discover(cuando se ejecuta en mi netbook) hace la lista del escritorio (y correcta), ambos bajo el título de estación de trabajo y el encabezamiento ssh. Sin embargo, todavía no puedo hacer ping o ssh en la PC usando nombres de host .local. Revisé el demonio en el escritorio de todos modos, y se avahi-daemon está ejecutando. ¿Algunas ideas? (por cierto, gracias por todos sus consejos, lo agradezco)
thatSeniorGuy 05 de
@thatSeniorGuy, avahi-resolve -4 --name yourdesktop.local?
user.dz
1
No fue instalado Lo instalé y funcionó !!!!!!!!! ¡Muchas gracias por tu ayuda! ¿Quizás agregar eso a tu publicación para que otros puedan verlo un poco más fácil?
thatSeniorGuy