Mamy serwer bastionowy, którego używamy do łączenia się z wieloma hostami, a nasz .ssh / config urósł do ponad tysiąca linii (mamy setki hostów, z którymi się łączymy). To zaczyna być trochę nieporęczne i chciałbym wiedzieć, czy istnieje sposób na podzielenie pliku .ssh / config na wiele plików. Idealnie byłoby gdzieś określić, że inne pliki byłyby traktowane jako plik .ssh / config, prawdopodobnie jak:
~/.ssh/config
~/.ssh/config_1
~/.ssh/config_2
~/.ssh/config_3
...
Przeczytałem dokumentację dotyczącą ssh / config i nie widzę, aby było to możliwe. Ale może ktoś inny miał podobny problem i znalazł rozwiązanie.
Odpowiedzi:
~/.ssh/config
Plik nie mają dyrektywy o tym inne pliki, ewentualnie związane z czekiem ssh za uprawnienia do plików.Sugestie wokół tego mogą obejmować skrypt do przechwytywania kilku zmian razem, zarówno w systemie, jak i za pomocą haczyków do sprawdzania w repozytorium. Można również przyjrzeć się narzędziom takim jak Puppet lub Augeas.
Jakkolwiek do tego podejdziesz, będziesz musiał połączyć poszczególne pliki w jeden plik spoza pliku.
uwaga: nadpisz:
>
vs dodaj:>>
Aktualizacja z grudnia 2017 r .:
Od wersji 7.3p1 i wyższej dostępna jest opcja Uwzględnij. Co pozwala dołączyć pliki konfiguracyjne.
źródło
Możesz określić bieżący plik konfiguracyjny do użycia w opcji ssh, tak jak to:
Wydaje się, że to jedyny sposób.
Nie ma też możliwości włączenia jednej konfiguracji do drugiej.
źródło
Począwszy od wersji ssh 7.3 (wydanej 1 sierpnia 2016 r.),
Include
Dostępna jest dyrektywa.(Oto link do usuniętego raportu o błędzie, który zawiera również łatkę: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
źródło
config
pliku. Nie mogę zrozumieć, dlaczego nie działa na dole.Osobiście używam tych poleceń do kompilacji konfiguracji ssh:
lub:
dlatego:
nie działa dla mnie, zwracając:
Mam nadzieję, że to pomoże.
źródło
ssh -F <(cat .ssh/*.config)
byłoby idealnie. Ja też to wymyśliłem, ale otrzymuję ten sam błąd. Czy ktoś wie, na czym polega problem?Chciałbym również użyć
cat config_* > config
do wygenerowania całej konfiguracji. Ale nie użyłbym do tego lalek / cfengine itp., Jeśli jeszcze ich nie ma (BTW: dlaczego nie użyć systemu zarządzania konfiguracją ???).Wygenerowałbym pakiet (deb, rpm) i umieściłbym go w lokalnym repozytorium. W skrypcie postinst kot generuje konfigurację. Być może dołączasz także folder lokalny ... Zaletą jest to, że aktualizacje ssh / config aktywują się codziennie, podczas uruchamiania cron-apt & Co.
źródło
Możesz użyć pliku Makefile w
~/.ssh
:Następnie przenieść istniejące
config
doconfig.in
i uruchomićmake
, aby wygenerowaćconfig
.źródło
Bawiłem się koncepcją
config.d
katalogu do organizowania konfiguracji. Aby dodać do powyższego stosu opcji, oto, co dla mnie działa.Struktura katalogów jest podobna
Funkcja, która buduje ~ / .ssh / config i żyje w run-config mojej powłoki, jest następująca
Opcjonalnie dodaj
sshMakeConfig
do dolnej części swojego run-config, jeśli chcesz zapewnić nową konfigurację w każdej sesji powłokiZa każdym razem, gdy muszę ponownie skompilować plik ~ / .ssh / config, robię to, uruchamiając
sshMakeConfig
w jakiejś formie (bezpośrednio, wyszukując mój plik run-config lub uruchamiając nową powłokę)źródło