使用ssh和Avahi时遇到问题


10

解决:确保已安装libnss-mdns!

我无法使用.local主机名在从上网本到桌面的SSH中使用SSH。每隔一段时间,我必须重置我使用的路由器,这会重置它分配给我的设备的地址,因此不久前,我设置了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切换到桌面时,收到以下错误消息(请注意,我在此输出中更改了PC的主机名):

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(因此PC上的守护程序运行正常)时,我可以将笔记本电脑从ssh切换到PC。使用.local地址。即使使用.local主机名,也可以在其他方向(PC-> netbook)上使用SSH正常运行。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主机名从上网本Ping PC无效(未知主机)。

编辑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 2014年

1
@Alex:理想情况下,这就是我想做的,但是正如我在帖子中指出的那样,我经常需要重置路由器,这会重置它给出的地址,这意味着我将更改/ etc / hosts定期归档文件,这就是我设置Avahi的原因。
thatSeniorGuy 2014年

1
@Sneetsher:刚刚尝试过,但没有:“ ping:未知主机pc.local。”
thatSeniorGuy 2014年

运行 strace ssh user@foo还将显示ssh与avahi-daemon联系解决请求,该请求foo超时...在我的情况下,更改为/etc/nsswitch.conf:从“ hosts: files mdns4_minimal [NOTFOUND=return] dns” 更改为“ hosts: files dns mdns4_minimal”。不知道为什么avahi守护程序不应该询问DNS服务器,它可能必须对LAN上的多播DNS和DNS之间的不兼容进行某些操作(另请参阅:.local TLD ... .local仍然是不好的做法)
David Tonhofer

Answers:


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 C库(glibc)的GNU名称服务开关(NSS)功能的插件,可通过多播DNS(使用Zeroconf,又名Apple Bonjour / Apple Rendezvous)提供主机名解析,从而有效地允许通过通用Unix进行名称解析临时mDNS域.local中的/ Linux程序

  3. 校验 /etc/nsswitch.conf

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

    如果您有配置resolve的DNS服务器,则应该在之前mdns4_minimalmdns4之前。[NOTFOUND=return]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是我的PC在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没有安装在我的上网本或PC上,因此我同时在两者上安装了它们。我还编辑/etc/nsswitch看起来像您所提供的样品(以前只有条目是文件和DNS),但都pingavahi还是给了同样的错误。还有其他建议吗?
thatSeniorGuy 2014年

嗯,这非常令人困惑。
thatSeniorGuy 2014年

删除wins没有帮助。avahi-dnsconf 在上网本上运行(虽然我不得不用sudo service avahi-dnsconfd列出,否则service将与未知的工作做出反应)。avahi-discover(在我的上网本上运行时)确实(并且正确地)在Workstation标题和ssh标题下列出了桌面。但是我仍然无法使用.local主机名ping或ssh进入PC。我仍然在桌面上检查了守护程序,并且该守护程序avahi-daemon 正在运行。有任何想法吗?(顺便说一句,感谢您的所有建议,我非常感激)
SeniorGuy 2014年

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

1
未安装。安装了它,就可以了!!!!!!!!! 非常感谢你的帮助!也许将其添加到您的帖子中,以便其他人可以更轻松地看到它?
thatSeniorGuy 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.