SSH 配置中的主机配置是否合并?

Pri*_*tzl 13 networking linux ssh openssh

我的 中有以下通用主机配置.ssh/ssh_config

Host *
  ConnectTimeout 5
  ServerAliveInterval 5
  ServerAliveCountMax 12
Run Code Online (Sandbox Code Playgroud)

我也有一些具体的配置。例如以下别名:

Host work-server-1
  Hostname a.b.c.d

Host work-server-2
  Hostname i.j.k.l
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:登录主机时work-server-1,SSH 是否还会使用条目中定义的ConnectTimeout,ServerAliveIntervalServerAliveCountMax设置Host *

Mar*_*ryl 21

对于每一个指令后,在第一个出现的相关ssh_config使用

引用手册页ssh_config

对于每个参数,将使用第一个获得的值。配置文件包含由Host规范分隔的部分,该部分仅适用于与规范中给出的模式之一匹配的主机。...

由于使用了每个参数的第一个获取值,因此应在文件开头附近给出更多特定于主机的声明,并在末尾给出一般默认值。


所以使用下面的配置文件:

  • 对于所有主机,ServerAliveInterval 1一直使用,4并且7从未使用过,甚至不work
  • ConnectTimeout2为了work,对于其他主机来说是3
  • 对于所有主机,ServerAliveCountMaxis 5,从不使用work-specific 值6,甚至不使用work
ServerAliveInterval 1

Host work
  ConnectTimeout 2

Host *
  ConnectTimeout 3
  ServerAliveInterval 4
  ServerAliveCountMax 5

Host work
  ServerAliveCountMax 6
  ServerAliveInterval 7
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢马丁。 (2认同)
  • 您甚至可以使用 ssh 详细标志来查看加载了哪些文件的哪些配置集,以调试问题 (2认同)