SSH Config中的Host和HostName有什么区别?


23

手册页说:

主办

Host将以下声明(最多下一个Host关键字)限制为仅与那些在关键字之后给出的模式之一匹配的主机。如果提供了多个模式,则应将其用空格分隔。单个“ *”作为模式可用于为所有主机提供全局默认值。主机是命令行上给出的主机名参数(即,在匹配之前,该名称不会转换为规范化的主机名)。

可以通过在模式条目前面加上感叹号(`!)来否定该模式条目。如果否定条目匹配,则主机条目将被忽略,无论该行上是否有其他任何模式都匹配。因此,否定匹配对于为通配符匹配提供例外很有用。

有关模式的更多信息,请参见模式。

主机名

HostName指定要登录的真实主机名。这可以用来指定主机的昵称或缩写。如果主机名包含字符序列'%h',则它将替换为在命令行上指定的主机名(这对于处理不合格的名称很有用)。默认名称是在命令行上给出的名称。也允许使用数字IP地址(在命令行和HostName规范中)。

例如,当我想为GitHub创建SSH Config时,Host和HostName应该分别是什么?


3
本质上:Host是用户在调用SSH时在CLI上输入的字符串;HostName是SSH客户端在尝试连接到服务器时将通过网络输出的字符串。
sampablokuper

Answers:


15

对于github.com,您~/.ssh/config可能看起来像这样

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

对于主机名:如man所说,它允许您指定主机的缩写。例如,如果您的~/.ssh/config样子是这样

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

然后当你输入

  • ssh host1您实际上登录到host1.example.com
  • ssh host2登录到anotherdomain.com

我猜您在第二个~/.ssh/config示例中是用“主机名”代替“主机” 吗?
戴夫

6

简单用法:

Host 是实际的主机名,没有 HostName

要么

Host是主机的昵称,HostName是实际的主机名。

简单的例子:

$ cat ~/.ssh/config
Host dev
    Hostname <hostname>
    User <username>
    IdentityFile <path_to_private_key>

$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"

注意:手册页在技术上是正确的,只是措辞有点奇怪。为了清楚起见,我将再添加几句话:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.


1

我最近想对主机名和主机名做一些事情,但是忘记了确切的语法……但是在谷歌上搜索时一团糟,手册页并没有太大帮助。因此,假设还有其他人也有同样的需求,这是我的小窍门。

主机指定命令行参数,可以认为是a)实际主机名/ IP,b)速记,c)别名。主机名是您要连接的计算机的真实主机名/ IP。在“主机名”字段中,可以将%h用作在命令行上指定的主机名字符串。(这是我想在示例中使用的部分。)

因此,假设您有一组主机,其主机名以my-proj-host-开头,并且它们都在域.my.proj.domain.com中,我需要使用特定的ssh密钥登录到它们my-proj-id-rsa和特定的用户ID my-proj-user。为了使我的生活更轻松,我将以下内容添加到〜/ .ssh / config文件中

托管my-proj-host *

主机名%h.my.proj.domain.com

用户my-proj-user

IdentityFile〜/ .ssh / my-proj-id-rsa

现在,我可以输入

ssh my-proj-host-1234

没有配置,那本来是

ssh -i〜/ .ssh / my-proj-id-rsa my-proj-user@my-proj-host-1234.my.proj.domain.com

节省了一些打字(和错别字)。

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.