如何从 Ubuntu 主机名中删除 .local 后缀?

如何从 Ubuntu 主机名中删除 .local 后缀?

当我尝试使用ssh终端命令连接到我的 Ubuntu 设备时,我必须.local为 Ubuntu 主机名添加后缀。例如,如果我想使用其主机名 ssh 连接到我的设备,我的 ssh 命令必须具有后缀,.local并且命令具有以下格式:

ssh username@device_hostname.local 

我知道.local后缀是由 avahi (zeroconf) Linux 服务附加的,但有没有快速(简单)的方法可以绕过它?我希望能够仅通过主机名“ssh”我的设备,而无需在命令末尾添加 .local 后缀,如下所示:

ssh username@device_hostname

我真正想要实现的是完全删除.local主机名的后缀。我读过有关运行我的私有 DNS 服务器的文章,但我想知道是否有更简单的解决方案。

答案1

您的客户端至少需要一种方法将主机名解析为 IP 地址。您已经发现的机制通过自动配置工作,并且发生在域名内.local

您可以在每个客户端上定义从主机名到 IP 地址的映射,但不建议这样做。

你会都要经过某种自动名称解析机制,而这一切都需要在后台使用某种域名。

但是,您可以通过以下方式轻松摆脱每次输入域名的麻烦:

ssh 主机名规范化

如果将以下内容放入/etc/ssh_config或中~/.ssh/config

Host *
  CanonicalDomains local
  CanonicalizeHostname yes

ssh 将自动附加当地的到任何主机名。因此,当您输入时,ssh host它实际上会执行ssh host.local

搜索域名

虽然上述操作仅适用于 ssh,但您也可以通过相应地配置客户端上的 dns 解析器为所有网络连接配置类似操作。这是拥有主机名快捷方式的“经典”方式。

根据您的设置,您可以将其添加local到搜索域列表中。这就是我所做的。应该有很多关于此内容的描述,像这样

硬编码到 /etc/hosts

完全不推荐这样做,因为虽然一开始看起来很简单,但很快就会变得难以维护。但据我所知,这是唯一可以完全摆脱域名的方法。

编辑文件/etc/hosts并添加如下行:

192.168.1.3 host3
192.168.1.4 host4

而每行的第一个字是相应主机的 IP 地址。您必须在每个客户端上执行此操作。之后,您可以使用ssh host3,即使在后台也不会使用域名。

答案2

/etc/hostname 是您要更新的名称。例如 mydomiain.com,我假设您具有 root 访问权限。也可以使用命令 hostname。因此您需要使用 vi 更新文件。第 1 行中的任何内容都需要用您的域名更新。非常简单。

相关内容