Řešení 1:
~/.ssh/config
soubor nemá direktivu pro zahrnutí dalších souborů, možná související s kontrolou SSH na oprávnění k souboru.
Návrhy kolem tohoto mohou zahrnovat skript, který spojí několik změn buď v systému, nebo pomocí kontrolních háčků v úložišti. Dalo by se také podívat na nástroje, jako je Puppet nebo Augeas.
Jakkoli k tomu však přistoupíte, budete muset zřetězit jednotlivé soubory, aby byly jedním souborem mimo soubor.
$ cat ~/.ssh/config_* >> ~/.ssh/config
poznámka: přepsat:>
v. s. připojit:>>
Aktualizace z prosince 2017:
Od 7.3p1 a výše existuje možnost Zahrnout. Což vám umožňuje zahrnout konfigurační soubory.
Include
Include the specified configuration file(s). Mul‐
tiple pathnames may be specified and each pathname
may contain glob(3) wildcards and, for user config‐
urations, shell-like “~” references to user home
directories. Files without absolute paths are
assumed to be in ~/.ssh if included in a user con‐
figuration file or /etc/ssh if included from the
system configuration file. Include directive may
appear inside a Match or Host block to perform con‐
ditional inclusion.
Řešení 2:
Aktuální konfigurační soubor, který se má použít ve volbě ssh, můžete zadat takto:
ssh -F /path/to/configfile
Zdá se, že je to jediný způsob.
Také neexistuje žádný způsob, jak zahrnout jednu konfiguraci do druhé.
Řešení 3:
Počínaje ssh 7.3 (vydáno 1. srpna 2016), Include
je k dispozici.
Zahrnout :Zahrnout zadané konfigurační soubory. Lze zadat více cest a každá cesta může obsahovat globwildcards a odkazy na domovské adresáře uživatelů podobné shellu. Soubory bez absolutních cest jsou považovány za
~/.ssh
.Include
direktiva se může objevit uvnitřMatch
neboHost
blokovat pro podmíněné zahrnutí.
(Zde je odkaz na opravenou zprávu o chybě, která také obsahuje opravu:https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24)
Řešení 4:
Osobně tyto příkazy používám ke kompilaci konfigurace ssh:
alias compile-ssh-config='echo -n > ~/.ssh/config && cat ~/.ssh/*.config > ~/.ssh/config'
alias ssh='compile-ssh-config && ssh'
# (This will get used by other programs depending on the ~/.ssh/config)
# (If you need you can run the compile-ssh-config command via cron etc.)
nebo:
alias compile-ssh-config='echo -n > ~/.ssh/config-compilation && cat ~/.ssh/*.config > ~/.ssh/config-compilation'
alias ssh='compile-ssh-config && ssh -F ~/.ssh/config-compilation'
# (This is saver and won't over write an existing ~/.ssh/config file)
protože:
alias ssh='ssh -F <(cat .ssh/*.config)'
nefunguje mi, vrací se:
ssh: Can't open user config file /dev/fd/63: Bad file descriptor
Doufám, že to bude k něčemu užitečné.
Řešení 5:
Také bych použil cat config_* > config
k vygenerování celé konfigurace. Ale nepoužil bych k tomu puppet/cfengine atd., pokud ještě nejsou zavedeny (BTW:proč nepoužít systém správy konfigurace???).
Vygeneroval bych balíček (deb, rpm) a vložil ho do místního úložiště. A v postinst skriptu kočka vygeneruje vaši konfiguraci. Možná zahrnete také místní složku...Výhodou je, že aktualizace ssh/config se aktivují denně, zatímco běží cron-apt &Co.