ปัญหาในการใช้ ssh และ Avahi


10

แก้ไขแล้ว:ตรวจสอบให้แน่ใจว่าติดตั้ง libnss-mdns แล้ว!

ฉันมีปัญหาในการใช้ SSH จากเน็ตบุ๊กไปยังเดสก์ท็อปโดยใช้ชื่อโฮสต์. 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>

ใช้งานได้ดี แต่ตอนนี้ด้วยเหตุผลบางอย่างเมื่อฉันพยายาม ssh จากเน็ตบุ๊กของฉันไปยังเดสก์ท็อปของฉันฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ (หมายเหตุฉันเปลี่ยนชื่อโฮสต์พีซีของฉันในผลลัพธ์นี้):

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

ฉันสามารถ ssh จากเน็ตบุ๊กของฉันไปยังพีซีของฉันเมื่อฉันใส่ที่อยู่ IP ด้วยตนเองและเมื่อฉันตั้งค่า / etc / โฮสต์อย่างถูกต้อง (ดังนั้น daemon บนพีซีของฉันทำงานได้ดี) มันหยุดทำงานเมื่อฉันพยายาม ใช้ที่อยู่. local SSH กำลังไปในทิศทางอื่น (PC-> netbook) ทำงานได้ดีแม้ใช้ชื่อโฮสต์. 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: การปิงพีซีจากเน็ตบุ๊กด้วยชื่อโฮสต์. 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ใช่ไหม?
Alex

ผ่านการทดสอบ ping 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: จาก " hosts: files mdns4_minimal [NOTFOUND=return] dns" เป็น " hosts: files dns mdns4_minimal" ไม่แน่ใจว่าทำไม avahi daemon ไม่ควรถามเซิร์ฟเวอร์ DNS มันอาจต้องทำอะไรบางอย่างที่มีความไม่ลงรอยกันระหว่าง multicast DNS กับ DNS ทั้งคู่บนระบบ LAN (ดูเพิ่มเติมที่: . local TLD ... มี .localการปฏิบัติที่ไม่ดีอยู่แล้ว)
David Tonhofer

คำตอบ:


11

ดี*.localที่ไม่ได้รับการแก้ไข

ดังนั้นบนเครื่องไคลเอนต์ (โน๊ตบุ๊ค)

  1. ติดตั้ง avahi-dnsconfd

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

    avahi-dnsconfdresolvconfฟังเพื่อการเผยแพร่และส่งพวกเขาไป

  2. ติดตั้งlibnss-mdns (ไลบรารีนี้หายไปการติดตั้งแก้ไขปัญหาในกรณีนี้)

    sudo apt-get install libnss-mdns
    

    nss-mdns เป็นปลั๊กอินสำหรับการทำงานของ GNU Name Service Switch (NSS) ของ GNU C Library (glibc) ที่ให้การจำแนกชื่อโฮสต์ผ่าน Multicast DNS (โดยใช้ Zeroconf หรือที่รู้จักกันในชื่อ Apple Bonjour / Apple Rendezvous) / Linux โปรแกรมในโดเมน ad-hoc 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. Reboot


คำแนะนำในการแก้ปัญหา:

  • เครื่องไคลเอ็นต์ (โน้ตบุ๊ก)

    1. ตรวจสอบavahi-dnsconfdสถานะบริการ

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. เรียกใช้avahi-discoverเดสก์ท็อปของคุณควรอยู่ในรายการ IPv4 → local → Workstation

      ตัวอย่างในสกรีนช็อต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ยังคงให้ข้อผิดพลาดเดียวกัน มีคำแนะนำเพิ่มเติมอีกไหม?
thatSeniorGuy

นี่เป็นเรื่องน่างงมาก
thatSeniorGuy

การลบwinsไม่ได้ช่วยอะไร avahi-dnsconf จะทำงานบนเน็ตบุ๊ก (แม้ว่าฉันจะต้องใช้sudo service avahi-dnsconfdเพื่อแสดงรายการไว้มิฉะนั้นserviceจะตอบสนองกับงานที่ไม่รู้จัก) avahi-discover(เมื่อทำงานบนเน็ตบุ๊กของฉัน) จะแสดงรายการเดสก์ท็อป (และถูกต้อง) ทั้งในส่วนหัวของเวิร์กสเตชันและส่วนหัว ssh แต่ฉันก็ยังไม่สามารถ ping หรือ ssh ในพีซีโดยใช้ชื่อโฮสต์. local ฉันจะตรวจสอบอยู่แล้วภูตบนเดสก์ทอปและavahi-daemon เป็นที่ทำงาน ความคิดใด ๆ (btw ขอบคุณสำหรับคำแนะนำของคุณฉันขอขอบคุณมัน)
thatSeniorGuy

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

1
ไม่ได้ติดตั้ง ติดตั้งแล้วและใช้งานได้ !!!!!!!!! ขอบคุณมากสำหรับความช่วยเหลือของคุณ! อาจเพิ่มที่โพสต์ของคุณเพื่อให้คนอื่นเห็นได้ง่ายขึ้นใช่ไหม
thatSeniorGuy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.