Problemas ao usar ssh e Avahi

10

Resolvido: verifique se o libnss-mdns está instalado!

Estou tendo problemas para usar o SSH do meu netbook para minha área de trabalho usando um nome de host .local. De vez em quando, tenho que redefinir o roteador que uso, que redefine os endereços que ele fornece aos meus dispositivos. Há algum tempo, configurei o Avahi para contornar isso *. O arquivo /etc/avahi/services/ssh.service é o padrão copiado da documentação:

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

Isso costumava funcionar bem, mas agora, por algum motivo, quando tento ssh do meu netbook para minha área de trabalho, recebo a seguinte mensagem de erro (note que alterei o nome do host do meu PC nesta saída):

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 do meu netbook para o meu PC quando coloco o endereço IP manualmente e quando configuro o / etc / hosts corretamente (para que o daemon no meu PC esteja funcionando bem), ele só pára de funcionar quando tento use o endereço local. O SSH na outra direção (PC-> netbook) funciona bem, mesmo quando se usa um nome de host .local. Avahi também parece estar funcionando bem:

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

O netbook está executando o Lubuntu 13.10; note que eu mudei para o Lubuntu recentemente e só lembro de ter visto esse erro no Lubuntu e não no Ubuntu comum. Minha área de trabalho está executando o Ubuntu 13.10.

Qualquer ajuda seria apreciada!

* Estou ciente de que pode configurar meu roteador para fornecer permanentemente endereços definidos para ambos os dispositivos, e farei isso se não conseguir resolver esse problema, mas prefiro tentar consertar isso do que solucionar o problema.

ETA: executar ping no PC do netbook com o nome de host .local não funciona (host desconhecido).

Edição 2: Conteúdo 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
fonte
Eu não uso DHCP nem Avahi há um tempo agora, mas você não pode simplesmente ssh user@hostname:/folder?
Alex #
O teste de ping passou ping pc.local?
User.dz
1
@Alex: Idealmente, é isso que eu gostaria de fazer, mas como eu apontei no post de vez em quando, tenho que redefinir o roteador, que redefine os endereços que ele fornece, o que significa que eu estaria alterando / etc / hosts arquivos regularmente, e é por isso que eu configurei o Avahi.
precisa saber é o seguinte
1
@ Sneetsher: Apenas tentei, e não: "ping: host desconhecido pc.local."
thatSeniorGuy
A execução strace ssh user@footambém mostrará que o ssh entra em contato com o avahi-daemon com a solicitação para resolver foo, o que excede o tempo limite ... No meu caso, foi alterado /etc/nsswitch.conf: De " hosts: files mdns4_minimal [NOTFOUND=return] dns" para " hosts: files dns mdns4_minimal". Não sei por que o avahi daemon NÃO deve pedir aos servidores DNS, ele pode ter que fazer algo com a incompatibilidade entre o DNS multicast e o DNS na LAN (veja também: .local TLD ... ter .localboas práticas de qualquer maneira)
David Tonhofer

Respostas:

11

Bem, *.localnão estão resolvidos.

Então na máquina do cliente (Notebook)

  1. Instalar avahi-dnsconfd

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

    avahi-dnsconfdouve a publicação e passa para resolvconf.

  2. Instalar libnss-mdns (esta biblioteca estava ausente, a instalação corrigiu o problema neste caso)

    sudo apt-get install libnss-mdns
    

    O nss-mdns é um plugin para a funcionalidade GNU Name Service Switch (NSS) da GNU C Library (glibc), fornecendo resolução de nomes de host via DNS Multicast (usando Zeroconf, também conhecido como Apple Bonjour / Apple Rendezvous), permitindo efetivamente a resolução de nomes pelo Unix comum / Linux no domínio ad-hoc mDNS .local

  3. Verifica /etc/nsswitch.conf

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

    Deveria ter mdns4_minimalou mdns4antes [NOTFOUND=return]e antes dnsse você tiver um servidor DNS configurado resolvido *.local.

    Remova winsse você não estiver usando o winbind / samba para resolver nomes de host de compartilhamento do Windows.

  4. Reiniciar


Dicas de depuração:

  • Máquina cliente (Notebook)

    1. Verifique o avahi-dnsconfdstatus do serviço

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Executar avahi-discover, sua área de trabalho deve estar listada em IPv4 → local → Estação de trabalho

      Exemplo na captura de tela mx5é o meu PC, onde salah-Aspire-5738está uma outra máquina.

      insira a descrição da imagem aqui

    3. Veja se Avahi pode resolver nomes de host

      avahi-resolve -4 --name yourdesktop.local
      
    4. Teste 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 servidor (área de trabalho) , no caso avahi-discoverda máquina cliente não listar a entrada do servidor.

    1. Confirme se avahi-daemonestá instalado

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

      avahi-daemon fornecer serviços de publicação.

    2. Verifique seu status de serviço

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Por serviço de avahipublicação padrão _workstation._tcp. verifique usando avahi-discoverlocalmente, se não estiver listado, tente ativá-lo /etc/avahi/avahi-daemon.conf(remover #)

      publish-workstation=yes
      

      Em seguida, reinicie o daemon:

      sudo service avahi-daemon restart
      

      Verifique novamente.

user.dz
fonte
Sem sorte, infelizmente. avahi-discovere avahi-dnsconfdnão foram instalados no meu netbook ou PC, instalei-os nos dois. Também editei /etc/nsswitchpara parecer com o exemplo que você forneceu (anteriormente as únicas entradas eram arquivos e dns), mas ambos pinge avahiainda dão o mesmo erro. Mais algum conselho?
thatSeniorGuy
Arrgh, isso é extremamente desconcertante.
thatSeniorGuy
A remoção winsnão ajudou. avahi-dnsconf está sendo executado no netbook (embora eu tivesse que usar sudo service avahi-dnsconfdpara listá-lo, caso contrário service, responderia com trabalho desconhecido). avahi-discover(quando executado no meu netbook) faz lista de área de trabalho (e corretamente), tanto sob o título Workstation eo título ssh. Ainda não consigo executar ping ou ssh no PC usando nomes de host local. Eu verifiquei o daemon na área de trabalho de qualquer maneira, e avahi-daemon está em execução. Alguma ideia? (btw, obrigado por todos os seus conselhos, agradeço)
thatSeniorGuy
@thatSeniorGuy avahi-resolve -4 --name yourdesktop.local,?
User.dz 5/05
1
Não foi instalado. Instalou, e funcionou !!!!!!!!! Muito obrigado pela sua ajuda! Talvez adicione isso à sua postagem para que outras pessoas possam vê-la um pouco mais fácil?
thatSeniorGuy