手册页是这样说的:
Host 将以下声明(直到下一个 Host 关键字)限制为仅适用于与关键字后给出的模式之一匹配的那些主机。如果提供了多个模式,它们应该用空格分隔。单个“*”作为模式可用于为所有主机提供全局默认值。主机是命令行上给出的主机名参数(即名称在匹配之前不会转换为规范化的主机名)。
模式条目可以通过在它前面加上感叹号 (`!') 来否定。如果匹配一个否定条目,则忽略 Host 条目,无论该行上的任何其他模式是否匹配。因此,否定匹配可用于为通配符匹配提供例外。>
有关模式的更多信息,请参阅模式。
HostName 指定要登录的真实主机名。这可用于指定主机的昵称或缩写。如果主机名包含字符序列`%h',那么它将被命令行上指定的主机名替换(这对于操作非限定名称很有用)。默认值是在命令行中给出的名称。也允许使用数字 IP 地址(在命令行和主机名规范中)。
例如,当我想为 GitHub 创建一个 SSH Config 时,Host 和 HostName 分别应该是什么?
小智 20
对于 github.com,您~/.ssh/config
可能看起来像这样
Host github.com
IdentityFile ~/.ssh/key_name_for_github
Run Code Online (Sandbox Code Playgroud)
对于主机名:正如 man 所说,它允许您指定主机的缩写。例如,如果你~/.ssh/config
看起来像这样
Host host1
HostName host1.example.com
Host host2
HostName anotherdomain.com
Run Code Online (Sandbox Code Playgroud)
然后当你输入
ssh host1
您实际上登录到host1.example.comssh host2
登录anotherdomain.com简单用法:
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>"
Run Code Online (Sandbox Code Playgroud)
注意:手册页在技术上是正确的,只是措辞有点奇怪。为了清楚起见,我还要添加几个词:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.
归档时间: |
|
查看次数: |
18712 次 |
最近记录: |