
Estou escrevendo alguns testes de integração que testam conexões SSH entre servidores.
Por enquanto, os testes são executados nos laptops das pessoas. Para não atrapalhar o usuário (o usuário que executa os testes), ~/.ssh/config
crio um diretório temporário com um ./tmp/.ssh/config
arquivo personalizado apenas para os testes. Depois eu exporto HOME=/path/to/tmp
. Infelizmente, descobri que o openssh não é usado $HOME
para procurar uma configuração ssh ou arquivos de identidade.
Tudo bem se eu estiver fazendo ssh diretamente para um host, porque posso definir explicitamente minha configuração usando o -F
sinalizador. No entanto, se eu estiver fazendo ssh através de um bastião e tiver um comando proxy, ssh
não passe esse arquivo de configuração para o meu comando proxy. Portanto, se minha configuração ssh personalizada usar um nome de usuário padrão diferente (por exemplo), essa configuração não será usada para o comando proxy.
Eu "poderia" modificar o comando proxy também (para usar um arquivo de configuração ssh como argumento), no entanto, gostaria de saber se é possível fazer com que o openssh procure os arquivos de configuração/identidade em um local diferente apenas usando de variáveis de ambiente (sem precisar passar o arquivo de configuração para cada comando downstream subsequente). Posso alterar meu agente ssh usando SSH_AUTH_SOCK
, então esperava poder alterar o diretório do arquivo de configuração também.
Responder1
De acordo com o código-fonte, ssh
obtém o diretório inicial do arquivo de senha e, se não tiver êxito, da variável de ambiente HOME.
O que você pode fazer é adicionar um Include
a cada usuário ~/.ssh/config
, digamos ~/tmp/user/.ssh/config
.
Se o arquivo a ser incluído não existir, ssh
não reclamaremos. Mas se existir e for legível, irá incluí-lo. Isso deve permitir que você faça os testes sem mexer muito nos arquivos.
Observe que isso representa um risco de segurança. Qualquer pessoa que conheça esses caminhos poderá injetar configurações locais para outros usuários se você não os proteger bem.