SSH Como eu ignoro os erros IdentityFile não encontrados?

6

Atualmente tenho isso no meu arquivo .ssh / config:

Host *
AskPassGUI no
IdentityFile ~/.ssh/%r@%h
IdentityFile ~/.ssh/%h
IdentityFile ~/.ssh/id_dsa

Quando eu ssh em um host que eu não tenho um arquivo de chave para, login funciona, mas eu também recebo esses erros:

no such identity: /Users/user/.ssh/[email protected]: No such file or directory
no such identity: /Users/user/.ssh/example.com: No such file or directory

Idealmente, gostaria que o ssh verifique os arquivos, mas não lance um erro se algum deles não for encontrado. A idéia é ser capaz de colocar chaves privadas com o nome "[email protected]" ou "exemplo.com.br" no meu diretório .ssh, e fazer com que o ssh as use ao fazer login com aquela combinação usuário / host, mas não reclamar e então faça o login normalmente se o arquivo estiver faltando. Não quero usar as diretivas Host , conforme descrito em esta resposta , porque eu tenho muitos arquivos de chaves e prefiro não ter que adicioná-los à pasta, editar o arquivo de configuração e adicionar diretivas de host para cada um.

Tal coisa é possível?

    
por bmacs 18.03.2014 / 12:55

1 resposta

7

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.

    
por 18.03.2014 / 23:36

Tags