Назад | Перейти на главную страницу

Переписать / перенаправить хост с помощью файла конфигурации SSH?

В моей компании есть три отдельных организатора прыжков. Что-то вроде: 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