为什么 SSH 配置中指定的 IP 范围没有继承 ProxyJump 参数?

为什么 SSH 配置中指定的 IP 范围没有继承 ProxyJump 参数?

我使用跳转服务器 (lab1) 连接到 IP 以 10.* 开头的服务器。所有其他服务器都不应使用 lab1 作为跳转服务器,并且需要不同的密钥。

主配置中包含两个配置和一些常规设置:

主要 ssh 配置:

Include ~/.ssh/lab.conf
Include ~/.ssh/prod.conf

Host *
  AddKeysToAgent yes
  UseKeychain yes
  User rg2531
  ForwardAgent yes
  ServerAliveInterval 30
  ServerAliveCountMax 10
  IdentityFile /SSH_keys/prod/id_rsa

实验室配置文件:

Host 10.*
  ProxyJump lab1

# Jump server
Host lab1
  HostName 134.121.15.2
  IdentityFile /SSH_keys/dev/id_rsa

# Individual hosts
Host lab2
  HostName 10.10.10.2

产品.conf:

Host prod1
  HostName 122.140.12.1

当我连接到 lab2 时,它应该使用 ProxyJump 通过跳转服务器(lab1)连接我,因为我有一个规则,Host 10.* 但它的行为并不按预期。

ProxyJump lab1它仅当我放入以下部分时才有效Host lab2

Host lab2
  HostName 10.10.10.2
  ProxyJump lab1

为什么ProxyJumpparam不能被继承?

答案1

因为它适用于您使用的名称。如果您使用,ssh 10.10.10.2您的客户端将使用配置中的 ProxyJump 设置。但是如果您 使用ssh lab2,则lab2值不匹配10.*,因此不使用该设置。所以这与继承无关,而是一旦加载了 `lab2 的配置并找到了 Hostname 值,ssh 就不会重新评估配置。

如果该网络上的所有计算机10.10.10.*恰好都名为 lab*,那么您可以执行类似的操作。

Host lab1
  HostName 134.121.15.2
  IdentityFile /SSH_keys/dev/id_rsa

Host lab* !lab1
  ProxyJump lab1

相关内容