Rắc rối khi sử dụng ssh và Avahi


10

Đã giải quyết: đảm bảo rằng libnss-mdns đã được cài đặt!

Tôi gặp sự cố khi sử dụng SSH từ netbook đến máy tính để bàn của mình bằng tên máy chủ .local. Mỗi lần như vậy, tôi phải đặt lại bộ định tuyến mà tôi sử dụng, nó đặt lại các địa chỉ mà nó cung cấp cho các thiết bị của tôi, vì vậy một thời gian trước tôi đã thiết lập Avahi để khắc phục điều này *. Tệp /etc/avahi/service/ssh.service là tệp tiêu chuẩn được sao chép từ tài liệu:

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

Điều này được sử dụng để hoạt động tốt, nhưng bây giờ vì một số lý do khi tôi cố gắng chuyển từ netbook sang máy tính để bàn của mình, tôi nhận được thông báo lỗi sau (lưu ý tôi đã thay đổi tên máy chủ của máy tính trong đầu ra này):

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

Tôi có thể ssh từ netbook sang PC khi tôi đặt địa chỉ IP theo cách thủ công và khi tôi đã thiết lập / etc / hosts chính xác (vì vậy trình nền trên PC của tôi hoạt động tốt), nó chỉ dừng hoạt động khi tôi cố gắng sử dụng địa chỉ .local. SSH theo hướng khác (PC-> netbook) hoạt động tốt, ngay cả khi sử dụng tên máy chủ .local. Avahi cũng hoạt động tốt:

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

Chiếc netbook này đang chạy LubFi 13.10; lưu ý rằng tôi đã thay đổi thành Lubfox gần đây và tôi chỉ nhớ là đã thấy lỗi này với Lubfox chứ không phải với Ubuntu đơn giản. Máy tính để bàn của tôi đang chạy Ubuntu 13.10.

Bất kỳ trợ giúp sẽ được đánh giá cao!

* Tôi biết rằng có thể thiết lập bộ định tuyến của mình để cung cấp địa chỉ vĩnh viễn cho cả hai thiết bị và tôi sẽ làm điều đó nếu tôi không thể giải quyết vấn đề này, nhưng tôi muốn thử và khắc phục vấn đề này hơn là làm việc xung quanh nó.

ETA: Ping máy tính từ netbook với tên máy chủ .local không hoạt động (máy chủ không xác định).

Chỉnh sửa 2: Nội dung của /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

Tôi đã không sử dụng DHCP và Avahi trong một thời gian, nhưng bạn có thể đơn giản ssh user@hostname:/folderkhông?
Alex

Đã kiểm tra ping vượt qua ping pc.local?
user.dz

1
@Alex: Lý tưởng nhất là những gì tôi muốn làm, nhưng như tôi đã chỉ ra trong bài đăng thường xuyên, tôi phải đặt lại bộ định tuyến, đặt lại các địa chỉ mà nó đưa ra, có nghĩa là tôi sẽ thay đổi / etc / hosts tập tin thường xuyên, đó là lý do tại sao tôi thiết lập Avahi.
thatSeniorGuy

1
@Sneetsher: Chỉ cần thử nó, và nó không: "ping: máy chủ không xác định pc.local."
thatSeniorGuy

Chạy strace ssh user@foocũng sẽ hiển thị rằng các liên hệ ssh avahi-daemon với yêu cầu giải quyết foo, hết thời gian ... Trong trường hợp của tôi đã thay đổi trong /etc/nsswitch.conf: Từ " hosts: files mdns4_minimal [NOTFOUND=return] dns" thành " hosts: files dns mdns4_minimal". Không chắc chắn tại sao avahi daemon được yêu cầu KHÔNG yêu cầu máy chủ DNS, nó có thể phải làm điều gì đó với sự không tương thích giữa DNS đa hướng và DNS cả trên mạng LAN (xem thêm: .local TLD ... .localdù sao cũng có thông lệ xấu)
David Tonhofer

Câu trả lời:


11

Vâng, *.localkhông được giải quyết.

Vì vậy, trên máy khách (Notebook)

  1. Tải về avahi-dnsconfd

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

    avahi-dnsconfdnghe việc xuất bản và vượt qua họ resolvconf.

  2. Cài đặt libnss-mdns (Thư viện này bị thiếu, Cài đặt đã khắc phục sự cố trong trường hợp này)

    sudo apt-get install libnss-mdns
    

    nss-mdns là một plugin cho chức năng Chuyển đổi dịch vụ tên GNU (NSS) của Thư viện GNU C (glibc) cung cấp độ phân giải tên máy chủ thông qua Multicast DNS (sử dụng Zeroconf, còn gọi là Apple Bonjour / Apple Rendezvous), cho phép giải quyết tên hiệu quả bằng Unix thông thường / Các chương trình Linux trong miền mDNS ad-hoc .local

  3. Kiểm tra /etc/nsswitch.conf

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

    Nó nên có mdns4_minimalhoặc mdns4trước [NOTFOUND=return]và trước dnsnếu bạn có một máy chủ DNS được cấu hình giải quyết *.local.

    Xóa winsnếu bạn không sử dụng winbind / samba để giải quyết tên máy chủ chia sẻ Windows.

  4. Khởi động lại


Gợi ý gỡ lỗi:

  • Máy khách (Notebook)

    1. Kiểm tra avahi-dnsconfdtrạng thái dịch vụ

      $ service avahi-dnsconfd status
      avahi-dnsconfd start/running, process 1548
      
    2. Chạy avahi-discover, Máy tính để bàn của bạn phải được liệt kê trong IPv4 → cục bộ → Máy trạm

      Ví dụ trong ảnh chụp màn hình mx5là PC của tôi, nơi salah-Aspire-5738là một máy khác.

      nhập mô tả hình ảnh ở đây

    3. Xem Avahi có thể giải quyết tên máy chủ không

      avahi-resolve -4 --name yourdesktop.local
      
    4. Kiểm tra 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áy chủ (Máy tính để bàn) , Trong trường hợp avahi-discovertrong Máy khách không liệt kê mục Máy chủ.

    1. Xác nhận đã avahi-daemonđược cài đặt

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

      avahi-daemon cung cấp dịch vụ xuất bản.

    2. Kiểm tra trạng thái dịch vụ của nó

      $ service avahi-daemon status
      avahi-daemon start/running, process 1517
      
    3. Theo mặc định dịch vụ avahixuất bản _workstation._tcp. kiểm tra bằng cách sử dụng avahi-discovercục bộ, nếu không được liệt kê, hãy thử bật /etc/avahi/avahi-daemon.conf(xóa #)

      publish-workstation=yes
      

      Sau đó khởi động lại daemon:

      sudo service avahi-daemon restart
      

      Kiểm tra lại.


Không may mắn. avahi-discoveravahi-dnsconfdkhông được cài đặt trên netbook hoặc PC của tôi, vì vậy tôi đã cài đặt chúng trên cả hai. Tôi cũng chỉnh sửa /etc/nsswitchđể trông giống như mẫu bạn cung cấp (trước đây các mục duy nhất là tệp và dns) nhưng cả hai pingavahivẫn đưa ra cùng một lỗi. Còn lời khuyên nào nữa không?
thatSeniorGuy

Arrgh, điều này là vô cùng bối rối.
thatSeniorGuy

Loại bỏ winskhông giúp được gì. avahi-dnsconf đang chạy trên netbook (mặc dù tôi phải sử dụng sudo service avahi-dnsconfdđể liệt kê nó, nếu không servicesẽ phản hồi với công việc không xác định). avahi-discover(khi chạy trên netbook của tôi) sẽ liệt kê máy tính để bàn (và chính xác), cả dưới tiêu đề Workstation và tiêu đề ssh. Tuy nhiên, tôi vẫn không thể ping hoặc ssh vào máy tính bằng cách sử dụng tên máy chủ .local. Tôi đã kiểm tra daemon trên máy tính để bàn và avahi-daemon đang chạy. Có ý kiến ​​gì không? (btw, cảm ơn vì tất cả lời khuyên của bạn, tôi đánh giá cao nó)
thatSeniorGuy

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

1
Chưa được cài đặt. Cài đặt nó, và nó hoạt động !!!!!!!!! Cảm ơn rất nhiều vì sự giúp đỡ của bạn! Có thể thêm nó vào bài viết của bạn để người khác có thể thấy nó dễ dàng hơn một chút?
thatSeniorGuy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.