В моей компании есть три отдельных организатора прыжков. Что-то вроде: jump1.example.com
, jump2.example.com
, и jump3.example.com
Доступ ко всем внутренним серверам должен осуществляться через эти промежуточные узлы:
local ---> jump1.example.com ---> internal.example.com
У нас есть лоты внутренних серверов, поэтому для упрощения я создал такой конфигурационный файл:
.ssh / config:
Host jump1.example.com jump2.example.com jump3.example.com
ForwardAgent yes
ProxyCommand none
Host *.example.com
PubkeyAuthentication yes
User sbarnett
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
ProxyCommand ssh -q -W %h:%p jump1.example.com
Обратите внимание, что мой открытый ключ находится на каждой из этих машин, поэтому эта настройка работает отлично. я могу печатать ssh internal.example.com
и он будет правильно проксировать через jump1.example.com
и подключиться с помощью моего закрытого ключа
Вот что я хочу сделать: вместо того, чтобы печатать jump1.example.com
или internal.example.com
, Я хотел бы просто ввести ssh jump1
или ssh internal
Я знаю, что это можно настроить для каждого хоста следующим образом:
Host internal
HostName internal.example.com
PubkeyAuthentication yes
User sbarnett
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
ProxyCommand ssh -q -W %h:%p jump1.example.com
Однако, если я попробую гораздо проще:
Host internal
HostName internal.example.com
Затем мои общие параметры конфигурации (в *.example.com
) не загружаются, когда я пытаюсь использовать ssh internal
- поэтому он не использует прокси и не использует файл удостоверений, что мешает мне подключиться.
Есть ли способ сказать "если хост название является *.example.com
(не обязательно хозяин) затем примените эти настройки »?
Бонусные баллы за способ перенаправления *
к *.example.com
если и только если *
не существует (например, при подключении к git@github.com
Я не хочу перенаправлять на git@github.com.example.com
)
Вариант, который вы ищете, это CanonicalizeHostname
.
Если вы добавите их в начало вашего .ssh / config, ssh internal
будет пытаться DNS разрешить вашу запись предположительно как internal.example.com, и в случае успеха он обработает его Host *.example.com
. Строка CanonicalDomains может иметь несколько записей, которые проверяются по порядку.
CanonicalDomains example.com
CanonicalizeHostname yes