Como configurar as chaves de fallback do SSH para regex

1

Estou tentando configurar meu arquivo de configuração do SSH para experimentar várias chaves e usuários diferentes para um domínio. Eu estava usando uma função no meu dotfiles para fazer isso originalmente, mas é pesado, lento e feio.

Minha empresa tem vários servidores com diferentes chaves privadas e usuários para login SSH. Há uma infinidade de nomes de host, mas o domínio é sempre o mesmo.

Eu poderia procurar em nosso registro mestre qual par de chave / nome de usuário eu preciso, mas isso não é divertido.

Isso faz parte do meu arquivo de configuração do SSH:

 Host *.companydomain.net
     User ubuntu
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/key_a.pem

 Host *.companydomain.net
     User ubuntu
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/key_b

 Host *.companydomain.net
     User anotheruser
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/key_c 

Então, agora parece que a primeira entrada (usando key_a.pem ) é tentada, então ela falha e não cai. Idealmente, eu gostaria que isso acontecesse e tente cada uma das três combinações até que um log in seja bem-sucedido.

Estou executando o macOS executando o OpenSSH_7.6p1.

Obrigado!

    
por party_hat_24 25.01.2018 / 23:46

1 resposta

0

O manual diz que você pode usar várias diretivas IdentityFile , e todos os arquivos listados serão usados, então as duas primeiras entradas podem ser combinadas para

Host *.companydomain.net
    User ubuntu
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/key_a.pem
    IdentityFile ~/.ssh/key_b

Mas eu não acho que você pode tentar vários nomes de usuário com uma invocação ssh (ou uma conexão SSH), então para isso você pode precisar fazer o script de qualquer forma.

Se você colocar o terceiro IdentityFile junto com os outros, o script não precisa ser muito longo, acho que algo assim deveria ser feito:

#!/bin/sh
for user in ubuntu anotheruser; do
    ssh -l "$user" "$@" && break;
done

(Retire a diretiva User do arquivo de configuração neste caso.)

    
por 26.01.2018 / 00:03