Caso seja importante:
- SO: Ubuntu 10.04
- SSH: OpenSSH_5.3p1 Debian-3ubuntu5
Eu gostaria que um arquivo de configuração SSH incluísse outro. O caso de uso seria definir o que eu quiser no meu padrão .ssh/config
arquivo e, em seguida, pré-pendurar um par de coisas extras em um arquivo separado (por exemplo, ~/.ssh/foo.config
). Eu quero que o segundo arquivo incorpore o primeiro, então não tenho que duplicar tudo no primeiro. Isso é factível? Obrigado!
Respostas:
De 7.3p1 e acima, há o
Include
palavra chave que permite incluir arquivos de configuração.Por exemplo, você poderia ter em
~/.ssh/config
:e em
~/.ssh/config.d/home
:Nos comentários, use o abaixo para incluir todos os arquivos no
config.d
diretório:fonte
Include config.d/*
para incluir todas as entradas emconfig.d
.Host
entradas.Não, no meu conhecimento isso não é possível.
Aqui estão os links para as solicitações de recursos abertos correspondentes / tickets de bug:
https://bugzilla.mindrot.org/show_bug.cgi?id=1585
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/739495
fonte
Slightly modified patch applied, this will be in openssh-7.3
Se você quer iniciar um cliente ssh, você pode fazer isso no bash:
então você usa o ssh normalmente e ele terá ambos os arquivos lidos nessa ordem.
Para o daemon do servidor
sshd
você poderia fazer o mesmo, apenas usar-f
ao invés de-F
e escreva isto onde você inicia o daemon diretamente. você não precisa de um alias.Uma segunda possibilidade, de acordo com a página man, é colocar a configuração do sistema
/etc/ssh/ssh_config
e o usuário um em~/.ssh/config
.Atualizar Aparentemente, há algum problema com algumas versões bash e como os dispositivos são criados. (Vejo http://bugs.alpinelinux.org/issues/1465 )
Esta é uma solução alternativa (embora na minha opinião feia):
então se você quiser, você pode criar uma função dele (ou um script):
fonte
~/.ssh/config
3/etc/ssh/ssh_config
você não precisa passar~/.ssh/config
na linha de comando também. Somentealias ssh='ssh -F ~/.ssh/foo.config'
e~/.ssh/config
deve ser pego depois disso. Contanto que você não se importefoo.config
sendo carregado primeiro que deve ser mais limpo do que a solução alternativa acima.Começando com o ssh 7.3 (lançado em 1 de agosto de 2016), um
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
Similarmente ao outro 'feio', aqui está o meu one-liner:
fonte
sftp
comando não acionará o recálculo de configuração.Bem, eu meio que trapaceio para fazer isso. Nos meus arquivos bash .profile-ish eu tenho um bloco que substitui várias partes do meu diretório home no login, então eu apenas gero um novo a cada vez. Exemplo:
Isso também me permite fazer coisas como adicionar blocos de configuração ao arquivo de configuração ssh somente se eu estiver no host A ou B, mas não nos meus sistemas domésticos.
Agora eu sei, alguém vai reclamar que se você logar muito isso pode causar lentidão excessiva, mas na prática eu nunca notei isso. E eu tenho certeza que você poderia colocar isso em um script e disparar via cron também.
fonte
Eu pessoalmente uso esses comandos para compilar a configuração do ssh:
ou:
Porque:
não funciona para mim, retornando:
Espero que isso seja de alguma ajuda.
fonte
Outra solução baseada em FUSE (não testada):
https://github.com/markhellewell/sshconfigfs
"Em vez de ter que continuar gerenciando um grande arquivo, [...] em vez disso, construa um" arquivo "de configuração dinamicamente a partir de muitos fragmentos lógicos menores."
Eu também encontrei um artigo fazendo isso via FIFOs: http://www.linuxsysadmintutorials.com/multiple-ssh-client-configuration-files/
fonte
Nenhuma dessas soluções de alias funciona para
git
ou outros programas que não sejamssh
.Eu bati um rápido e sujo, mas você pode querer melhorar isso.
Adicione isto ao seu
~/.bashrc
Cada vez que você inicia uma sessão, ela mesclará todos os arquivos
~/.ssh/config.d
. (linha 3)A desvantagem desta versão é que, se você mudar
~/.ssh/config
Na próxima sessão que você abrir, suas alterações serão perdidas, para evitar que eu mova o arquivo existente para um arquivo .bak. (linha 2) O problema é que você vai ter um monte de arquivos .bak depois de um tempo.fonte
is_anything_changed
condiçãoVocê pode facilmente atualizar a versão SSH no Ubuntu para v7.3 (testado no Ubuntu Xenial 16.04) instalando pacotes da Yakkety:
Verifique a versão do SSH
Configurar o SSH para usar inclusões do diretório ~ / .ssh / config.d
fonte
Minha resposta idiota:
Então eu me decidi por isso:
~/.ssh/config.d/
cat ~/.ssh/config.d/* > ~/.ssh/config
Include config.d/*
fonte
Eu não posso atualizar o SSH na minha máquina também.
Eu usei o GNU make para gerar o arquivo de configuração ssh somente quando necessário :
Então ssh é aliado para
Ele funciona como um encanto.
fonte