Probleme mit ssh und Avahi

10

Gelöst: Stellen Sie sicher, dass libnss-mdns installiert ist!

Ich habe Probleme mit der Verwendung von SSH von meinem Netbook auf meinen Desktop unter Verwendung eines lokalen Hostnamens. Ab und zu muss ich den von mir verwendeten Router zurücksetzen, wodurch die Adressen zurückgesetzt werden, die er an meine Geräte weitergibt. Vor einiger Zeit habe ich Avahi eingerichtet, um dies zu umgehen *. Die Datei /etc/avahi/services/ssh.service ist die Standarddatei, die aus der Dokumentation kopiert wurde:

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

Früher funktionierte das einwandfrei, aber jetzt, wenn ich versuche, von meinem Netbook auf meinen Desktop zu ssh, wird die folgende Fehlermeldung angezeigt (Hinweis: Ich habe den Hostnamen meines PCs in dieser Ausgabe geändert):

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

Ich kann von meinem Netbook auf meinen PC ssh, wenn ich die IP-Adresse manuell eingebe und / etc / hosts richtig eingerichtet habe (damit der Daemon auf meinem PC einwandfrei funktioniert), funktioniert er nur dann nicht mehr, wenn ich es versuche Verwenden Sie die lokale Adresse. SSH'ing in die andere Richtung (PC-> Netbook) funktioniert einwandfrei, auch wenn ein lokaler Hostname verwendet wird. Avahi scheint auch gut zu funktionieren:

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

Auf dem Netbook wird Lubuntu 13.10 ausgeführt. Beachten Sie, dass ich kürzlich zu Lubuntu gewechselt bin, und ich erinnere mich nur, dass ich diesen Fehler bei Lubuntu und nicht bei einfachem Ubuntu gesehen habe. Auf meinem Desktop läuft Ubuntu 13.10.

Jede Hilfe wäre dankbar!

* Ich bin mir bewusst, dass mein Router so eingerichtet werden kann, dass beiden Geräten dauerhaft festgelegte Adressen zugewiesen werden, und ich werde dies tun, wenn ich dieses Problem nicht beheben kann, aber ich würde es vorziehen, dies zu beheben, anstatt es zu umgehen.

ETA: Das Pingen des PCs vom Netbook mit dem lokalen Hostnamen funktioniert nicht (unbekannter Host).

Edit 2: Inhalt von /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
quelle
Ich habe seit einiger Zeit weder DHCP noch Avahi verwendet, aber können Sie nicht einfach ssh user@hostname:/folder?
Alex
Hat der Ping-Test bestanden ping pc.local?
user.dz
1
@Alex: Idealerweise würde ich das gerne tun, aber wie ich in der Post immer wieder betont habe, muss ich den Router zurücksetzen, wodurch die von ihm angegebenen Adressen zurückgesetzt werden, was bedeutet, dass ich / etc / hosts ändern würde Dateien regelmäßig, weshalb ich Avahi eingerichtet habe.
thatSeniorGuy
1
@Sneetsher: Ich habe es gerade versucht und es nicht: "ping: unbekannter Host pc.local."
thatSeniorGuy
Das Ausführen strace ssh user@foozeigt auch, dass ssh den avahi-daemon mit der Auflösungsanforderung kontaktiert, die eine Zeitüberschreitung aufweist. fooIn meinem Fall wurde Folgendes geändert /etc/nsswitch.conf: Von " hosts: files mdns4_minimal [NOTFOUND=return] dns" bis " hosts: files dns mdns4_minimal". Ich bin mir nicht sicher, warum der Avahi-Daemon KEINE DNS-Server fragen soll. Möglicherweise hat er etwas mit der Inkompatibilität zwischen Multicast-DNS und DNS im LAN zu tun (siehe auch: .local TLD ... .localist sowieso eine schlechte Praxis)
David Tonhofer

Antworten:

11

Nun, *.localsind nicht gelöst.

Also auf Client-Maschine (Notebook)

  1. Installieren avahi-dnsconfd

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

    avahi-dnsconfdhört sich die Veröffentlichung an und gibt sie an weiter resolvconf.

  2. Installieren libnss-mdns (Diese Bibliothek fehlte. Durch die Installation wurde das Problem in diesem Fall behoben.)

    sudo apt-get install libnss-mdns
    

    nss-mdns ist ein Plugin für die NSS-Funktionalität (GNU Name Service Switch) der GNU C Library (glibc), das die Auflösung von Hostnamen über Multicast-DNS (unter Verwendung von Zeroconf, auch bekannt als Apple Bonjour / Apple Rendezvous) ermöglicht und die Namensauflösung durch allgemeines Unix ermöglicht / Linux-Programme in der Ad-hoc-mDNS-Domäne .local

  3. Prüfen /etc/nsswitch.conf

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

    Es sollte mdns4_minimaloder mdns4vor [NOTFOUND=return]und vor haben, dnswenn Sie einen DNS-Server haben, der die Auflösung konfiguriert hat *.local.

    Entfernen winsSie diese Option, wenn Sie winbind / samba nicht zum Auflösen von Windows-Freigabe-Hostnamen verwenden.

  4. Starten Sie neu


Tipps zum Debuggen:

  • Client-Maschine (Notebook)

    1. Überprüfen Sie den avahi-dnsconfdServicestatus

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Ausführen avahi-discover, Ihr Desktop sollte unter IPv4 → lokal → Workstation aufgeführt sein

      Beispiel im Screenshot mx5ist mein PC, auf dem salah-Aspire-5738sich eine andere Maschine befindet.

      Geben Sie hier die Bildbeschreibung ein

    3. Überprüfen Sie, ob Avahi Hostnamen auflösen kann

      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
      
  • Server-Computer (Desktop) , Falls avahi-discoverauf dem Client-Computer kein Servereintrag aufgeführt ist.

    1. Bestätigen Sie, dass avahi-daemoninstalliert ist

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

      avahi-daemon Dienstleistungen veröffentlichen.

    2. Überprüfen Sie den Servicestatus

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Standardmäßig avahiVeröffentlichungsdienst _workstation._tcp. avahi-discoverAktivieren Sie die Option " Lokal verwenden". Wenn nicht aufgeführt, aktivieren Sie sie in /etc/avahi/avahi-daemon.conf(entfernen #).

      publish-workstation=yes
      

      Starten Sie dann den Daemon neu:

      sudo service avahi-daemon restart
      

      Nochmal Überprüfen.

user.dz
quelle
Leider kein Glück. avahi-discoverund avahi-dnsconfdwurden nicht auf meinem Netbook oder PC installiert, also habe ich sie auf beiden installiert. Ich habe auch so bearbeitet /etc/nsswitch, dass es wie das von Ihnen bereitgestellte Beispiel aussieht (zuvor waren die einzigen Einträge Dateien und DNS), aber beide pingund avahiimmer noch den gleichen Fehler. Noch ein Rat?
thatSeniorGuy
Arrgh, das ist extrem verwirrend.
ThatSeniorGuy
Entfernen winshat nicht geholfen. avahi-dnsconf wird auf dem Netbook laufen (obwohl ich musste verwende sudo service avahi-dnsconfdes zur Liste, sonst servicemit unbekanntem Job reagieren würde). avahi-discover(wenn auf meinem Netbook laufen) tut Liste der Desktop (und richtig), die beide unter der Workstation Überschrift und der SSH - Überschrift. Trotzdem kann ich mit .local-Hostnamen immer noch nicht pingen oder ssh in den PC. Ich habe den Dämon auf dem Desktop wie auch immer, und avahi-daemon wird ausgeführt. Irgendwelche Ideen? (Übrigens, danke für all Ihren Rat, ich weiß das zu schätzen)
thatSeniorGuy
@thatSeniorGuy , avahi-resolve -4 --name yourdesktop.local?
user.dz
1
Wurde nicht installiert. Installierte es und es funktionierte !!!!!!!!! Vielen Dank für deine Hilfe! Vielleicht fügst du das deinem Beitrag hinzu, damit andere es ein bisschen einfacher sehen können?
thatSeniorGuy