我是 Linux 新手(目前运行的是 Ubuntu 10.04),我刚刚设置好 Linux 机器的 SSH 访问权限。目前,我必须使用进行连接,但更希望能够将 IP 替换为计算机名称(如在 Windows 中使用)或域名(如)。ssh [email protected]
\\name
computername.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 上。
- 阿瓦希with
nss_mdns
仍然是 Linux 和 BSD 的首选。 systemd-resolved
withnss_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_resolve
Linux 上的 (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 上受到本地支持。
nmbd
与nss_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\hosts
Windows、/etc/hosts
Linux 和其他平台上。
3.4. SSH 客户端配置
您可以在 PuTTY 连接配置文件中保存预填充的主机名,也可以通过~/.ssh/config
OpenSSH 类似地定义短名称。
3.5. 桌子上到处都是便签
优点:非常便宜。无命名策略。无限数据类型。
缺点:相当不可靠。必须手动分发。没有 TTL,这通常会导致陈旧信息被缓存数月,直到有人注意到。查询算法效率低下。查询的响应往往很容易丢失,有时只会在显示器上留下一条胶水记录。(三个月后,您可能会发现它们缓存在您的办公桌后面。)
答案2
两个选择。
- 所有服务:
在 中为其添加一个条目/etc/hosts
。不要触碰现有行,添加新的行。
- 仅限 ssh:
添加一个包含您要使用的名称的Host
节,然后在其下方添加所需的选项。请参阅以了解更多详细信息。~/.ssh/config
man 5 ssh_config
Host myserver
Hostname 192.168.123.234
Protocol 2
答案3
如果您想从任意计算机访问 Linux 机器,则需要一个域名。使用动态 DNS 服务将域名指向您的 Linux 计算机(或它所连接的路由器)。设置完成后,它还会为您带来额外的好处,让您不必担心 Linux 计算机的 IP 不断变化。
答案4
您将需要研究 Samba 或 Winbind。我的全 Linux 网络(包括路由器)可以通过主机名相互通信,但我不确定如何告诉 Windows Linux 机器的名称是什么。