Após rever o código-fonte do openssh, parece que a resposta é a seguinte:
O OpenSSH considera as linhas do IdentityFile em ~ / .ssh / config como "fornecidas pelo usuário". Se um usuário fornecido IdentityFile não puder ser encontrado, ele registrará um aviso no console. Veja a função 'load_identity_file' em sshconnect2.c.
Então, infelizmente, é impossível fazer exatamente o que eu quero, mas existem algumas soluções:
Uma seria adicionar a linha LogLevel ERROR
ao seu arquivo ~ / .ssh / config. Esta é uma etapa abaixo do nível de log padrão de INFO
. Eu não escolhi isso porque não tinha certeza de que outros avisos seriam suprimidos.
A opção que escolhi foi adicionar as seguintes linhas ao meu arquivo / etc / ssh_config:
Host *
IdentityFile ~/.ssh/%r@%h
IdentityFile ~/.ssh/%h
# The lines below maintain ssh's default behavior:
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
Em seguida, removi as linhas IdentityFile
do meu arquivo ~ / .ssh / config.
Essas linhas não são consideradas "fornecidas pelo usuário" quando estão em / etc / ssh_config, então nada é registrado quando o arquivo não pode ser encontrado.