Проблеми з використанням ssh та Avahi


10

Вирішено: переконайтесь, що libnss-mdns встановлено!

У мене виникають проблеми із використанням SSH'ing з мого нетбука на робочому столі за допомогою .local імені хоста. Часто мені доводиться скидати використовуваний роутер, який скидає адреси, які він видає на мої пристрої, тому деякий час тому я налаштував Avahi, щоб обійти це *. Файл /etc/avahi/services/ssh.service є стандартним, скопійованим з документації:

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

Це працювало чудово, але тепер чомусь, коли я намагаюся перенести з мого нетбука на робочий стіл, я отримую таке повідомлення про помилку (зауважте, що я змінив ім'я хоста ПК у цьому виході):

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

Я можу сш з мого нетбука на свій ПК, коли я вручаю IP-адресу вручну, і коли я правильно налаштував / etc / hosts (тому демон на моєму ПК працює нормально), він припиняє роботу лише тоді, коли я намагаюся використовувати .local адресу. SSH'ing в іншому напрямку (ПК-> нетбук) працює чудово, навіть якщо використовується .local ім'я хоста. Avahi також, здається, працює добре:

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

У нетбуку працює Lubuntu 13.10; зауважте, що я нещодавно змінив Lubuntu, і я лише пам'ятаю, як бачив цю помилку з Lubuntu, а не з звичайним Ubuntu. На моєму робочому столі працює Ubuntu 13.10.

Будь-яка допомога буде вдячна!

* Я знаю, що можу настроїти моєму маршрутизатору назавжди надати задані адреси обом пристроям, і я зроблю це, якщо я не можу вирішити цю проблему, але я вважаю за краще спробувати виправити це, а не працювати над цим.

ETA: Pinging ПК з нетбука з .local ім'ям хоста не працює (невідомий хост).

Правка 2: Зміст /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

Я вже деякий час не використовую DHCP і Avahi, але ви просто не можете ssh user@hostname:/folder?
Олексій

Чи пройшов тест пінг ping pc.local?
user.dz

1
@Alex: В ідеалі це те, що я хотів би зробити, але, як я зазначав у публікації, так часто мені доводиться скидати маршрутизатор, який скидає адреси, які він видає, а це означає, що я буду змінювати / etc / hosts файли регулярно, саме тому я налаштував Avahi.
thatSeniorGuy

1
@Sneetsher: Просто спробував це, а це не так: "ping: невідомий хост pc.local."
thatSeniorGuy

Запуск strace ssh user@fooтакож покаже, що ssh контакти avahi-daemon із запитом вирішити foo, який закінчується ... У моєму випадку змінено на /etc/nsswitch.conf: From " hosts: files mdns4_minimal [NOTFOUND=return] dns" to " hosts: files dns mdns4_minimal". Не впевнений, чому демон avahi НЕ запитує DNS-серверів, можливо, це доведеться зробити з несумісністю між багатоадресною DNS і DNS як у локальній мережі (див. Також: .local TLD ... у .localбудь-якому випадку це погана практика)
Девід Тонхофер

Відповіді:


11

Ну, *.localне вирішені.

Так на клієнтській машині (Блокнот)

  1. Встановити avahi-dnsconfd

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

    avahi-dnsconfdслухає видавництво та передає їх resolvconf.

  2. Встановити libnss-mdns (ця бібліотека відсутня. Встановлення її вирішило проблему в цьому випадку)

    sudo apt-get install libnss-mdns
    

    nss-mdns - це плагін для функціональності перемикача служб імен GNU (NSS) бібліотеки GNU C (glibc), що забезпечує дозвіл імені хоста через Multicast DNS (використовуючи Zeroconf, він же Apple Bonjour / Apple Rendezvous), що ефективно дозволяє вирішувати імена загальним Unix / Програми Linux у спеціальному домені mDNS .local

  3. Перевірити /etc/nsswitch.conf

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

    Він повинен мати mdns4_minimalабо mdns4раніше, [NOTFOUND=return]і раніше, dnsякщо у вас є сервер DNS, який налаштовував рішення *.local.

    Видаліть, winsякщо ви не використовуєте winbind / samba для вирішення імен хостів Windows.

  4. Перезавантажте


Підказки щодо налагодження:

  • Клієнтська машина (Блокнот)

    1. Перевірте avahi-dnsconfdстан обслуговування

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Виконати avahi-discover, Ваш робочий стіл повинен бути вказаний в IPv4 → місцевому → Робочій станції

      Прикладом скріншота mx5є мій ПК, де salah-Aspire-5738знаходиться інша машина.

      введіть тут опис зображення

    3. Подивіться, чи Avahi може вирішити імена хостів

      avahi-resolve -4 --name yourdesktop.local
      
    4. Тест пінг

      $ 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
      
  • Серверна машина (Настільний) , У випадку, якщо avahi-discoverв Клієнтській машині не вказано запис сервера.

    1. Переконайтесь, що avahi-daemonвстановлено

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

      avahi-daemon надавати послуги з видавничої діяльності.

    2. Перевірте його стан обслуговування

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. За замовчуванням послуга avahiпублікації _workstation._tcp. перевірте, використовуючи avahi-discoverлокально, якщо немає в списку, спробуйте ввімкнути його /etc/avahi/avahi-daemon.conf(видалити #)

      publish-workstation=yes
      

      Потім перезапустіть демон:

      sudo service avahi-daemon restart
      

      Перевірте ще раз.


На жаль, не щастить avahi-discoverі avahi-dnsconfdне були встановлені на моєму нетбуку чи ПК, тому я встановив їх на обох. Я також редагував так, /etc/nsswitchщоб виглядати як зразок, який ви надали (раніше єдиними записами були файли та dns), але обидва, pingі avahiвсе ще дають ту саму помилку. Будь-яка порада?
щоSeniorGuy

Аррх, це надзвичайно дивовижно.
щоSeniorGuy

Видалення winsне допомогло. avahi-dnsconf це працює на нетбуці (хоча я повинен був використовувати sudo service avahi-dnsconfdв список, в іншому випадку serviceбуде реагувати з невідомої роботою). avahi-discover(При запуску на моєму нетбуці) робить список на робочому столі (і правильно), і під заголовком робочої станції і SSH заголовок. Але я все ще не можу пінг або ssh на ПК, використовуючи .local імена хостів. Я перевірив демон на робочому столі в будь-якому випадку, і avahi-daemon це працює. Будь-які ідеї? (btw, дякую за всі ваші поради, я ціную це)
thatSeniorGuy

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

1
Не було встановлено. Встановив його, і спрацювало !!!!!!!!! Дуже дякую за допомогу! Може, додати це до своєї публікації, щоб інші могли бачити це трохи простіше?
щоSeniorGuy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.