В случае, если это имеет значение:
- ОС: Ubuntu 10.04
- SSH: OpenSSH_5.3p1 Debian-3ubuntu5
Я хотел бы, чтобы один файл конфигурации SSH включал другой. Сценарий использования будет определять все, что я хочу в моем .ssh/config
файле по умолчанию, а затем предварительно ожидать несколько дополнительных вещей в отдельном файле (например ~/.ssh/foo.config
). Я хочу, чтобы второй файл включал первый, поэтому мне не нужно дублировать все в первом. Это выполнимо? Спасибо!
Ответы:
Начиная с версии 7.3p1, есть
Include
ключевое слово, которое позволяет вам включать файлы конфигурации.Например, вы можете иметь в
~/.ssh/config
:и в
~/.ssh/config.d/home
:Из комментариев используйте ниже, чтобы включить все файлы в
config.d
каталог:источник
Include config.d/*
для включения всех записей вconfig.d
.Host
записей.Нет, насколько мне известно, это невозможно.
Вот ссылки на соответствующие открытые запросы / сообщения об ошибках:
https://bugzilla.mindrot.org/show_bug.cgi?id=1585
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/739495
источник
Slightly modified patch applied, this will be in openssh-7.3
Если вы хотите запустить ssh-клиент, вы можете сделать это в bash:
тогда вы используете ssh как обычно, и оба файла будут прочитаны в указанном порядке.
Для демона сервера
sshd
вы можете сделать то же самое, просто используйте-f
вместо него-F
и запишите это, где вы запускаете демон напрямую. вам не нужен псевдоним.Вторая возможность в соответствии со страницей руководства состоит в том, чтобы ввести общесистемную конфигурацию
/etc/ssh/ssh_config
и пользовательскую~/.ssh/config
.Обновление Очевидно, что есть некоторые проблемы с некоторыми версиями bash и тем, как создаются устройства. (см. http://bugs.alpinelinux.org/issues/1465 )
Это обходной путь (хотя, на мой взгляд, некрасиво):
так что если вы хотите, вы можете создать из него функцию (или скрипт):
источник
~/.ssh/config
, 3./etc/ssh/ssh_config
, вам также не нужно передавать~/.ssh/config
командную строку. Просто такalias ssh='ssh -F ~/.ssh/foo.config'
и~/.ssh/config
должно быть забрано после этого. Пока вы не возражаете противfoo.config
загрузки в первую очередь, это должно быть чище, чем описанный выше обходной путь.Начиная с ssh 7.3 (выпущен 1 августа 2016 г.),
Include
доступна директива.(Вот ссылка на исправленный отчет об ошибке, который также включает патч: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
источник
Так же, как и другие «уродливые», вот моя строка:
источник
sftp
команда не вызовет пересчет конфигурации.Ну, я вроде обманываю, чтобы сделать это. В моих файлах bash .profile-ish у меня есть блок, который заменяет различные части моего домашнего каталога при входе в систему, поэтому я просто генерирую новый каждый раз. Пример:
Это также позволяет мне делать такие вещи, как добавление блоков конфигурации в файл конфигурации ssh, только если я на хосте A или B, но не на моих домашних системах.
Теперь я знаю, что кто-то пожалеет, что если вы войдете в систему, это может вызвать чрезмерное замедление, но на практике я никогда этого не замечал. И я уверен, что вы можете поместить это в скрипт и запустить его через cron.
источник
Я лично использую эти команды для компиляции конфигурации ssh:
или же:
потому что:
у меня не работает, возвращаю
Надеюсь, это поможет.
источник
Другое решение на базе FUSE (сам не проверял):
https://github.com/markhellewell/sshconfigfs
«Вместо того, чтобы продолжать управлять одним большим файлом, вместо этого [...] создайте файл конфигурации« динамически из множества меньших логических блоков ».
Я также нашел статью, делающую это через FIFO: http://www.linuxsysadmintutorials.com/multiple-ssh-client-configuration-files/
источник
Ни одно из этих решений псевдонимов не работает для
git
других программ, кромеssh
.Я быстро и грязно собрал все вместе, но вы можете улучшить его.
Добавьте это к вашему
~/.bashrc
Каждый раз, когда вы начинаете сеанс, он объединяет все файлы
~/.ssh/config.d
. (строка 3)Недостатком этой версии является то, что если вы измените
~/.ssh/config
следующую сессию, то ваши изменения будут потеряны, поэтому я не могу переместить существующий файл в файл .bak. (строка 2) Проблема в том, что через некоторое время у вас будет много .bak файлов.источник
is_anything_changed
условийВы можете легко обновить версию SSH в Ubuntu до v7.3 (протестировано в Ubuntu Xenial 16.04), установив пакеты из Yakkety:
Проверьте версию SSH
Настройте SSH для использования include из каталога ~ / .ssh / config.d
источник
Мой тупой ответ:
Поэтому я согласился на это:
~/.ssh/config.d/
cat ~/.ssh/config.d/* > ~/.ssh/config
Include config.d/*
источник
Я не могу обновить SSH на моей машине.
Я использовал GNU make для генерации конфигурационного файла ssh только при необходимости :
Затем SSH связывается с
Отлично работает.
источник