解决了:确保 libnss-mdns 已安装!
我在使用 .local 主机名从上网本通过 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 到桌面时,我收到以下错误消息(请注意,我在此输出中更改了我的电脑的主机名):
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 地址时,我可以从上网本通过 SSH 连接到 PC,并且当我正确设置 /etc/hosts 时(这样 PC 上的守护进程就可以正常工作),只有当我尝试使用 .local 地址时,它才会停止工作。即使使用 .local 主机名,反向 SSH(PC->上网本)也可以正常工作。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
答案1
嗯,*.local
还没解决。
很快客户端机器(笔记本)
安装
avahi-dnsconfd
sudo apt-get install avahi-daemon avahi-dnsconfd avahi-discover avahi-utils
avahi-dnsconfd
听取出版意见并将其传递给resolvconf
。安装
libnss-mdns
(缺少此库,安装它可以解决问题)sudo apt-get install libnss-mdns
nss-mdns 是 GNU C 库 (glibc) 的 GNU 名称服务切换 (NSS) 功能的插件,它通过多播 DNS(使用 Zeroconf,又名 Apple Bonjour / Apple Rendezvous)提供主机名解析,有效地允许常见的 Unix/Linux 程序在临时 mDNS 域 .local 中进行名称解析
查看
/etc/nsswitch.conf
hosts: files wins mdns4_minimal dns [NOTFOUND=return] mdns4
如果您有一个配置了解析的 DNS 服务器,则它应该在
mdns4_minimal
或mdns4
之前[NOTFOUND=return]
和 之前。dns
*.local
wins
如果您没有使用 winbind/samba 来解析 Windows 共享主机名,请删除。重启
调试提示:
客户端机器(笔记本)
检查
avahi-dnsconfd
服务状态$ service avahi-dnsconfd status avahi-dnsconfd start/running, process 1548
运行
avahi-discover
,您的桌面应该列在 IPv4→本地→工作站中屏幕截图中的示例
mx5
是我的 PC,其中salah-Aspire-5738
有另一台机器。查看 Avahi 是否可以解析主机名
avahi-resolve -4 --name yourdesktop.local
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
服务器(台式机),以防
avahi-discover
客户端机器中没有列出服务器条目。确认已
avahi-daemon
安装sudo apt-get install avahi-daemon avahi-dnsconfd avahi-discover avahi-utils
avahi-daemon
提供服务发布。检查其服务状态
$ service avahi-daemon status avahi-daemon start/running, process 1517
默认
avahi
发布_workstation._tcp
服务。检查avahi-discover
本地使用,如果没有列出,请尝试启用它/etc/avahi/avahi-daemon.conf
(删除#
)publish-workstation=yes
然后重新启动守护进程:
sudo service avahi-daemon restart
再检查一遍。