Я использую сервер перехода (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
Почему ProxyJump
param не наследуется?
решение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