Temos um servidor bastião que usamos para conectar-se a vários hosts, e nosso .ssh / config aumentou para mais de mil linhas (temos centenas de hosts aos quais nos conectamos). Isso está começando a ficar um pouco pesado e eu gostaria de saber se existe uma maneira de dividir o arquivo .ssh / config em vários arquivos. Idealmente, especificaríamos em algum lugar que outros arquivos seriam tratados como um arquivo .ssh / config, possivelmente como:
~/.ssh/config
~/.ssh/config_1
~/.ssh/config_2
~/.ssh/config_3
...
Eu li a documentação em ssh / config e não vejo que isso seja possível. Mas talvez alguém tenha tido um problema semelhante e tenha encontrado uma solução.
Respostas:
O
~/.ssh/config
arquivo não possui uma diretiva para incluir outros arquivos, possivelmente relacionados à verificação de permissões de arquivo do SSH.As sugestões para isso podem incluir um script para reunir várias alterações no sistema ou através de ganchos de check-in em um repositório. Pode-se também procurar ferramentas como Puppet ou Augeas.
Entretanto, no entanto, você precisa concatenar arquivos individuais para que sejam um único arquivo de fora do arquivo.
note: substituir:
>
vs acrescentar:>>
Atualização em dezembro de 2017:
A partir de 7.3p1, há a opção Incluir. O que permite incluir arquivos de configuração.
fonte
Você pode especificar o arquivo de configuração atual a ser usado na opção ssh assim:
Parece que é o único caminho.
Também há hoje em dia para incluir uma configuração em outra.
fonte
A partir do ssh 7.3 (lançado em 1º de agosto de 2016), uma
Include
diretiva está disponível.(Aqui está o link para o relatório de bug resolvido, que também inclui o patch: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
fonte
config
arquivo. Não consigo descobrir por que não está funcionando no fundo.Eu pessoalmente uso esses comandos para compilar a configuração do ssh:
ou:
Porque:
não funciona para mim, retornando:
Espero que isso ajude.
fonte
ssh -F <(cat .ssh/*.config)
seria o ideal. Também vim com isso, mas estou recebendo o mesmo erro. Alguém sabe qual é o problema aqui?Eu também usaria
cat config_* > config
para gerar toda a configuração. Mas eu não usaria puppet / cfengine etc para isso, se eles ainda não estiverem no lugar (BTW: por que não usar um sistema de gerenciamento de configurações ???).Eu geraria um pacote (deb, rpm) e o colocaria em um repositório local. E no script postinst, o gato gera sua configuração. Talvez você também inclua uma pasta local ... A vantagem é que as atualizações do ssh / config são ativadas diariamente enquanto o cron-apt & Co é executado.
fonte
Você pode usar um Makefile em
~/.ssh
:Em seguida, mova seu existente
config
paraconfig.in
e executemake
para gerarconfig
.fonte
Eu tenho jogado com o conceito de um
config.d
diretório para a minha organização de configuração. Então, para adicionar à pilha de opções acima, eis o que está funcionando para mim.A estrutura de diretórios é algo como
A função que cria o ~ / .ssh / config e mora na run-config do meu shell é a seguinte
Opcionalmente, adicione
sshMakeConfig
na parte inferior da sua configuração de execução se quiser garantir uma nova configuração em cada sessão do shellSempre que preciso recompilar meu ~ / .ssh / config, faço isso executando
sshMakeConfig
de alguma forma (diretamente, fornecendo meu run-config ou iniciando um novo shell)fonte