通过名称而非IP连接到Linux


18

我是Linux的新手(当前正在运行Ubuntu 10.04),并且刚完成对Linux机器的SSH访问设置。目前,我必须使用ssh root@x.x.x.xconnect进行连接,但更希望能够将IP交换为计算机名(例如Windows中的\\name)或域名(例如computername.example.com)。

我真的不知道从哪里开始,所以任何帮助将不胜感激。如前所述,请慢慢走-我对此还是陌生的。


编辑1

完全忘记提及我正在尝试从Windows 7(通过PuTTY)进行连接-抱歉。


您是要从局域网内部还是从世界任何地方进行连接?
Karl Bielefeldt 2010年

6
同样,FYI允许通过ssh作为root进行连接通常被认为是安全性不好的主意。建议以普通用户身份登录,然后从那里使用su或sudo。
Karl Bielefeldt 2010年

我的局域网和整个世界(尽管我想我都知道如何设置世界访问权限,所以这个问题更多的是针对局域网的)-root @比其他任何例子都更示例-我实际上使用的是用户。
Ryall

尽管我不得不选择一个答案,但我选择了最详细的答案,这是许多人的感谢-感谢大家。
Ryall 2010年

Answers:


36

零配置LAN发现协议,按优先顺序排列:

  • 域名解析
    • 主要由Apple产品和某些Linux程序使用,但也可用于Windows和其他平台;使用IP多播。
    • 提供名称查找和服务发现。
    • 主机名始终为形式name.local
    • 软件:
      • Windows 10.1709和更高版本受本机支持(必须通过注册表启用);
      • 在旧版Windows上的Bonjour
      • 的avahinss_mdnsLinux上;
      • 在OS X和iOS(当然还有Android)上受本机支持。
  • LLMNR
    • Windows Vista和更高版本用于名称解析,作为NetBIOS名称服务的现代替代方案。
    • 与mDNS非常相似,但是功能较少-特别是缺少服务发现(Windows为此使用WS-Discovery协议)。
    • 使用裸主机名(如NBNS,但与mDNS不同)。
    • 软件:
      • Windows Vista和更高版本本身支持;
      • systemd-resolvednss_resolve在Linux上使用(systemd 216的一部分)。。
  • NetBIOS名称服务
    • Windows,OS / 2,MS-DOS ...仍在使用的 NetBIOS网络协议套件的一部分。这不是在新网络上开始使用它的借口。
    • 提供名称解析和(在某种程度上)服务发现-Windows中又称为“网络邻居”或“我的网上邻居”。
    • 使用IPv4广播(有点聊天),并具有自己复杂而愚蠢的“浏览器选择”协议以减少聊天。完全不支持IPv6。
    • 软件:
      • Windows和OS / 2本身受支持;
      • nmbd在Linux和BSD上使用nss_winsSamba的一部分);
      • 显然OS X本身也支持它吗?

通常为您预先配置的方法:

  • 使用本地(内部)域名的 DNS
    • 家庭网关倾向于将其内置,作为本地DNS缓存的一部分。通常它只是常规的dnsmasq,如果您要设置基于Linux / BSD的网关,则可以手动运行。
    • 他们从您的DHCP请求中获取主机名,在域名下的dnsmasq中注册该主机名home,并将其提供为主要DNS服务器(充当DNS缓存)。
    • 默认情况下,它适用于大多数操作系统,但仅适用于DHCP(网关不知道静态IP主机的主机名),并且根据我的经验,它通常比较不稳定。
    • 软件:
      • 主机上的常规DHCP客户端。必须发送主机名选项。
      • dnsmasq在网关上。(较大的设置可以使用dhcpd+ named。)

涉及手动配置的方法:

  • 使用您自己的域名的 DNS
    • 随处可见。(不过,这不会帮助您通过Internet 进行实际连接。)
    • 如果使用DHCP并控制DNS服务器,则可以使用动态DNS。否则,所有数据都是静态的。
    • 需要拥有一个域名(这将花费几美元)。
  • 免费DNS子域
    • 仍然是DNS,只是免费的(或比域便宜得多),但也相当有限。诸如FreeDNSDyn之类的服务可在其控制的域下注册各个子(例如myhost.dyndns.com)。
      • 很多时候,子域已被其他人选中...
    • 通常允许动态DNS更新(DynDNS样式)。
  • /etc/hosts
    • 列出IP地址-主机名对的文本文件,必须在每台客户端计算机上手动配置。
    • %SystemRoot%\system32\drivers\etc\hosts在Windows上)
  • SSH配置
    • PuTTY或~/.ssh/configOpenSSH上的“主机名”字段。
    • 必须手动配置。
  • PostIt笔记遍布您的办公桌
    • 非常便宜。没有命名政策。无限数据类型。
    • 相当不可靠。必须手动分发。没有TTL,通常会导致过时的信息被缓存数月,直到有人注意到为止。查询算法效率低下。对查询的响应往往容易丢失,有时在监视器上仅留下一个胶粘记录。(三个月后,您可能会发现它们被缓冲在桌子后面。)

7
哈哈,我喜欢PostIt notes选项:)
Ryall

1
为mDNS / Avahi +1。默认情况下,Avahi已在许多发行版中安装,但可能是您的软件包安装包。
Broam

1
在Debian中,您将必须手动安装Avahi。
Martin Ueding

2
@grawity好答案。不过,还有一件事需要改进:请记住,没有注册域,本地DNS / DHCP可以很好地工作。只需将Raspberry PI放在桌子下面,并使用dnsmasq设置小型服务器即可。
悖论

1
@paradoxon:谢谢,我忘了提了。(大多数家庭网关已经运行了dnsmasq或类似但更糟糕的东西。)
user1686

4

两种选择。

  • 所有服务:

在中输入一个条目/etc/hosts。不要触摸现有行,而是添加新行。

  • 仅ssh:

将一个Host节添加到要~/.ssh/config使用的名称,然后在其下面添加所需的选项。请参阅man 5 ssh_config以获取更多详细信息。

Host myserver
    Hostname 192.168.123.234
    Protocol 2

4

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


1
只是为了澄清一下,计算机的IP地址可能仍会更改(取决于ISP如何管理这些内容),但是您不必担心,因为动态DNS服务提供的域名始终会映射到当前电脑的IP地址是。
David Z

4

从Windows 7(根据您的编辑)...

Start -> Run -> notepad c:\windows\system32\drivers\etc\hosts

记事本启动后,转到文件底部,然后添加您的IP地址和主机名:

x.x.x.x    mylinuxhostname mylinuxhostname.domain.com

保存文件,然后尝试在命令提示符下ping它:

c:\> ping mylinuxhostname
c:\> ping mylinuxhostname.domain.com

这仅在您的LAN中有效。从“世界”(连接到您的评论)连接到它是完全不同的野兽,涉及DNS(dyndns,godaddy等)和路由器配置,例如(NAT)网络地址转换等。


2

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


1
我的网络之所以这样做是因为Avahi(Zeroconf网络)。我不知道Zeroconf客户端/服务器在Windows上的可行性。
Broam

1

我还使用Ubuntu 10.04,可以使用它们的名称连接到我的机器。假设我有一台名为ernie和bert的计算机位于同一网络上:

我的提示在ernie上看起来像这样:

ernie:~$ 

如果输入:

ernie:~$ ssh root@bert.local

我将扎根于bert:

bert:~#

我在两台ubuntu机器之间进行此操作,但我猜它也可以在腻子中使用。(我不知道如何从Ubuntu连接到Windows,请参阅有关samba的其他答案。)

您必须在Ubuntu中安装sshd才能起作用: sudo apt-get install openssh-server


1
这是因为Avahi是默认安装的Zeroconf守护程序。除非他因其他原因拥有客户端(也许iTunes安装了一个客户端?我不能说。),否则Windows上不会对他有帮助
。– Broam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.