Почему параметр ProxyJump не наследуется для указанного диапазона IP-адресов в конфигурации SSH?

Почему параметр ProxyJump не наследуется для указанного диапазона IP-адресов в конфигурации SSH?

Я использую сервер перехода (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

lab.conf:

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

prod.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.*, поэтому настройка не используется. Так что дело не в наследовании, а в том, что ssh не переоценивает конфигурацию после загрузки конфигурации для `lab2 и находит значение Hostname.

Если все ваши компьютеры в этой 10.10.10.*сети имеют имя lab*, вы можете сделать что-то вроде этого.

Host lab1
  HostName 134.121.15.2
  IdentityFile /SSH_keys/dev/id_rsa

Host lab* !lab1
  ProxyJump lab1

Связанный контент