通过名称而不是 IP 连接到 Linux

通过名称而不是 IP 连接到 Linux

我是 Linux 新手(目前运行的是 Ubuntu 10.04),我刚刚设置好 Linux 机器的 SSH 访问权限。目前,我必须使用进行连接,但更希望能够将 IP 替换为计算机名称(如在 Windows 中使用)或域名(如)。ssh [email protected]\\namecomputername.example.com

我真的不知道从哪里开始,所以任何帮助都会非常感激。请慢慢来,正如提到的那样 - 我对此还很陌生。


编辑1

完全忘了说我正尝试从 Windows 7 连接(通过 PuTTY)——抱歉。

答案1

1. 零配置协议(按优先顺序)

1.1. mDNS(多播DNS)

mDNS 起源于 Apple,也被称为你好,这是 Apple 对其 mDNS 实现的品牌。它最初是基于 IP 的 AppleTalk 发现服务的替代品。

如今,mDNS 可在大多数平台上使用,并且通常是首选,无论是对于主机名查找还是服务发现(它比许多替代方案更简单)。

mDNS 主机名始终采用以下形式name.local。 (例外:Windows 10+ 中的内置 mDNS 处理将像以前一样接受裸主机名,并在后台自动将其转换为 mDNS 格式。)

软件:

  • 在 Windows 10.1709 及更高版本上原生支持。(最初它是通过注册表设置选择加入的,但我相信它现在是默认启用的,至少在 Windows 11 中是这样的。)
  • 可以像苹果一样安装你好在 Windows XP 上。
  • 阿瓦希withnss_mdns仍然是 Linux 和 BSD 的首选。
  • systemd-resolvedwithnss_resolve是 Linux 的另一个选项(比 Avahi 更新,但仍然不完整)。
  • 由 macOS(OS X)和 iOS 原生支持。
  • Android 原生支持(我知道 Android 11 可以识别 .local 域,但据我记得,Android 7 还不能识别)。
  • 显然,我的博世洗衣机本身支持该功能。
1.2. 法学硕士

LLMNR 是在 Windows Vista 中引入的,作为 NetBIOS 名称服务 (NBNS) 的现代替代品,它是一种与 mDNS 非常相似的协议(但使用裸主机名,并且缺乏服务发现功能 - Vista 使用 WS-Discovery 协议来实现此目的)。

然而,截至 2023 年,被认为是死路– 微软最终放弃并完全转向 mDNS 进行本地名称解析。

  • 由 Windows Vista – Windows 11 原生支持。
  • systemd-resolved使用nss_resolveLinux 上的 (systemd 216 的一部分)。
1.3. NBNS(NetBIOS 名称服务)

的一部分老的Windows、OS/2、MS-DOS 等使用的 NetBIOS 网络协议套件。任何使用 SMBv1 的设备都可能支持 NBNS。(同样,它和 SMBv1 一样过时,如果在 Windows 中禁用 SMBv1 支持,这也会禁用 NBNS。)

提供名称解析和(某种程度上)服务发现 - NBNS 是 Windows 中最初支持“网络邻居”或“网上邻居”的一部分。

NBNS 根本不支持 IPv6。由于某些底层复杂性(“浏览器选举”机制原本是为了减少聊天量),它也很容易出现故障。

  • 在 Windows 和 OS/2 上受到本地支持。
  • nmbdnss_wins(部分桑巴) 在 Linux 和 BSD 上。
  • 显然 OS X 也原生支持它?

2. 通常为你预先配置的方法

2.1. 使用本地(内部)域名的 DNS

家庭网关往往内置有此功能,作为本地 DNS 缓存的一部分。通常它只是常规的dnsmasq,如果您正在设置基于 Linux/BSD 的网关,则可以手动运行它。

.home您的网关从 DHCP 请求中获取主机名,在其内部 DNS 服务中以或等域进行注册.lan,并将自身作为主 DNS 服务器(充当 DNS 缓存)。

默认情况下适用于大多数操作系统,但仅限于 DHCP(网关不知道手动配置的主机的主机名),并且根据我的经验,通常往往相当不稳定。

软件:

  • 主机上的常规 DHCP 客户端。必须在其租约请求中发送“主机名”选项(大多数设备都这样做)。

  • dnsmasq在网关上。(更大的设置可以使用dhcpd+ named。)

3. 涉及手动配置的方法

3.1. 使用您自己的域名进行 DNS

到处都适用。(实际上不会帮助你连接通过互联网。)

如果您使用 DHCP 并控制 DNS 服务器,则可以实现动态 DNS;否则所有数据都是静态的。

您需要实际拥有一个域名(这将花费几块钱)。

3.2. 免费 DNS 子域名

仍然是 DNS,只是免费(或比域名便宜得多),但也相当有限。类似这样的服务免费DNS动态提供以下单独子域名的注册他们控制的域名(例如myhost.dyndns.com)。

(很多时候,子域名已经被别人选择了......)

通常允许动态 DNS 更新(DynDNS 样式)。

3.3./etc/hosts

列出 IP 地址 - 主机名对的文本文件,必须在每个客户端计算机上手动配置。

该位置位于%SystemRoot%\system32\drivers\etc\hostsWindows、/etc/hostsLinux 和其他平台上。

3.4. SSH 客户端配置

您可以在 PuTTY 连接配置文件中保存预填充的主机名,也可以通过~/.ssh/configOpenSSH 类似地定义短名称。

3.5. 桌子上到处都是便签

优点:非常便宜。无命名策略。无限数据类型。

缺点:相当不可靠。必须手动分发。没有 TTL,这通常会导致陈旧信息被缓存数月,直到有人注意到。查询算法效率低下。查询的响应往往很容易丢失,有时只会在显示器上留下一条胶水记录。(三个月后,您可能会发现它们缓存在您的办公桌后面。)

答案2

两个选择。

  • 所有服务:

在 中为其添加一个条目/etc/hosts。不要触碰现有行,添加新的行。

  • 仅限 ssh:

添加一个包含您要使用的名称的Host节,然后在其下方添加所需的选项。请参阅以了解更多详细信息。~/.ssh/configman 5 ssh_config

Host myserver
    Hostname 192.168.123.234
    Protocol 2

答案3

如果您想从任意计算机访问 Linux 机器,则需要一个域名。使用动态 DNS 服务将域名指向您的 Linux 计算机(或它所连接的路由器)。设置完成后,它还会为您带来额外的好处,让您不必担心 Linux 计算机的 IP 不断变化。

答案4

您将需要研究 Samba 或 Winbind。我的全 Linux 网络(包括路由器)可以通过主机名相互通信,但我不确定如何告诉 Windows Linux 机器的名称是什么。

相关内容