У нас есть бастионный сервер, который мы используем для подключения к нескольким хостам, и наш .ssh / config вырос до более чем тысячи строк (у нас есть сотни хостов, к которым мы подключаемся). Это становится немного громоздким, и я хотел бы знать, есть ли способ разбить файл .ssh / config на несколько файлов. В идеале, мы бы указали где-нибудь, что другие файлы будут обрабатываться как файл .ssh / config, возможно, как:
~/.ssh/config
~/.ssh/config_1
~/.ssh/config_2
~/.ssh/config_3
...
Я прочитал документацию по ssh / config и не вижу, что это возможно. Но, возможно, кто-то еще имел подобную проблему и нашел решение.
Ответы:
~/.ssh/config
Файл не директива для включения других файлов, возможно , связанных с проверкой SSH для прав доступа к файлам.Предложения по этому вопросу могут включать сценарий для отслеживания нескольких изменений в системе либо через зацепки в хранилище. Можно также изучить такие инструменты, как Puppet или Augeas.
Однако, как бы вы к нему ни подходили, вам придется объединять отдельные файлы в единый файл вне файла.
примечание: перезаписать:
>
против добавления:>>
Обновление декабря 2017 года:
Начиная с 7.3p1 и выше, есть опция Включить. Который позволяет вам включать файлы конфигурации.
источник
Вы можете указать текущий конфигурационный файл для использования в опции ssh следующим образом:
Кажется, это единственный способ.
Также есть возможность включить один конфиг в другой.
источник
Начиная с ssh 7.3 (выпущен 1 августа 2016 г.),
Include
доступна директива.(Вот ссылка на исправленный отчет об ошибке, который также включает патч: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
источник
config
файла. Я не могу понять, почему это не работает в нижней части.Я лично использую эти команды для компиляции конфигурации ssh:
или же:
потому что:
у меня не работает, возвращаю
Надеюсь, это поможет.
источник
ssh -F <(cat .ssh/*.config)
было бы идеально. Я тоже придумал это, но я получаю ту же ошибку. Кто-нибудь знает, в чем здесь проблема?Я также хотел бы использовать
cat config_* > config
для генерации всего конфига. Но я бы не использовал для этого puppet / cfengine и т. Д., Если они еще не созданы (кстати: почему бы не использовать систему управления конфигурациями ???).Я бы сгенерировал пакет (deb, rpm) и поместил его в локальный репозиторий. И в сценарии postinst кот генерирует ваш конфиг. Возможно, вы также включили локальную папку ... Преимущество заключается в том, что обновления ssh / config активируются ежедневно, пока выполняется cron-apt & Co.
источник
Вы можете использовать Makefile в
~/.ssh
:Затем переместите существующую
config
вconfig.in
и запуститьmake
для генерацииconfig
.источник
Я играл с концепцией
config.d
каталога для организации моей конфигурации. Таким образом, чтобы добавить к вышеупомянутой куче вариантов, вот то, что работает для меня.Структура каталогов что-то вроде
Функция, которая создает ~ / .ssh / config и живет в run-config моей оболочки, выглядит следующим образом
При желании добавьте
sshMakeConfig
в конец своего run-config, если вы хотите обеспечить новую конфигурацию для каждого сеанса оболочкиКаждый раз, когда мне нужно перекомпилировать мой ~ / .ssh / config, я делаю это, выполняя
sshMakeConfig
какую-либо форму (напрямую, используя мой run-config или запуская новую оболочку)источник