Estou executando uma imagem do Ubuntu em um contêiner docker, com meu diretório .ssh montado no meu ambiente MacOs nativo.
Meu arquivo .ssh/config contém
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519_common
Isso funciona bem em um mac, mas AddKeysToAgent e UseKeychain não são válidos para linux, e qualquer coisa (por exemplo, git) que use o pacote openssh-client não apenas ignorará as diretivas não reconhecidas, mas falhará e sairá.
Existe alguma maneira de ter um arquivo .ssh/config que me permita compartilhá-lo entre mac e linux?
Você pode usar a palavra-
Match
chave no arquivo de configuração ssh para restringir uma parte da configuração a ser aplicada apenas sob certas condições. Para o trecho da pergunta, algo como o seguinte deve funcionar:Em um sistema linux,
grep
retornará falha (1) e, portanto, a(s) linha(s) a seguir será(ão) ignorada(s); no host Mac, o grep retornará sucesso (0) e aUseKeychain yes
linha será aplicada.O
Match
bloco é encerrado pelo próximoMatch
,Host
, ou fim do arquivo.Observe que
AddKeysToAgent
não é específico da plataforma, mas está disponível no OpenSSH desde a versão 7.2, portanto, presumivelmente, você está usando uma versão mais antiga do OpenSSH no contêiner do Ubuntu, mas não no host Mac.Você deve usar a
IgnoreUnknown
diretiva no início do seu~/.ssh/config
:Da página de
ssh_config(5)
manual:Em todas as versões do
openssh
que pude testar, umaMatch
condição de falha não impedirássh
o erro nas seguintes diretivas desconhecidas: