除非手动将“.local”添加到主机名,否则无法通过 ssh 进入同一台机器

除非手动将“.local”添加到主机名,否则无法通过 ssh 进入同一台机器

我正在使用本地运行的集群工具(hadoop),它必须能够执行无密码 ssh,如下所示:

 ssh $(hostname)

在我的 Mac 笔记本电脑上,这不起作用。以下是/etc/hosts

127.0.0.1   localhost 
xx.xx.242.47    TCA0080ALKVTAGB

可以使用ping主机名:

ping $(hostname)
PING TCA0080ALKVTAGB.local (xx.xx.242.47): 56 data bytes
64 bytes from xx.xx.242.47: icmp_seq=0 ttl=64 time=0.044 ms
64 bytes from xx.xx.242.47: icmp_seq=1 ttl=64 time=0.115 ms

但是尝试ssh主机名不起作用:

 $ssh $(hostname)
ssh: Could not resolve hostname tca0080alkvtagb: nodename nor servname provided, or not known

通过添加.local偶数.ssh作品

 ssh $(hostname).local   # this works

注意:我已经添加.local到全局搜索域(通过System Preferences | Network | Advanced | DNS):

在此处输入图片描述

答案1

您需要在您的$(hostname)

因此您需要使您的 /etc/hosts 类似:

127.0.0.1 本地主机

xx.xx.242.47 TCA0080ALKVTAGB TCA0080ALKVTAGB.本地

答案2

问题是公司防火墙干扰了 DNS(是的 - 甚至干扰了本地机器的解析...)。我不知道详细信息,但是当防火墙被禁用时,DNS 可以正常工作。

相关内容