Use a chave X SSH ao efetuar login no usuário remoto Y?

2

Estou procurando uma maneira de definir uma chave SSH específica ao fazer login em um host remoto com um nome de usuário específico. Isso é possível dentro do arquivo de configuração do SSH?

Por exemplo:

Use a chave "id_rsa-test" para o nome de usuário "testuser":

ssh testuser@host1
ssh testuser@host2
ssh testuser@host3

Use a chave "id_rsa" para todos os outros usuários.

ssh root@host1
ssh admin@host2
ssh [email protected]

Existe uma maneira de configurar isso?

    
por user2248259 27.07.2017 / 02:31

2 respostas

2

Obrigado @xhienne ( link de comentário ) para sua sugestão.

Adicionando o seguinte ao ssh_config parece ter resolvido o problema:

Match User testuser
  IdentityFile ~/.ssh/id_rsa-test

Este bloco deve ser colocado acima de Host * para enviar id_rsa-test à frente de id_rsa para o testuser.

    
por 27.07.2017 / 03:39
1

Supondo que você esteja usando o OpenSSH, você pode configurar seu arquivo ~/.ssh/config para cada, então você não terá que especificar um usuário, você pode criar seu próprio nome:

host host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test

então, quando você fizer ssh host1 , isso será feito automaticamente ou, como você usará host1 como outros usuários também, poderá fazer

host test-host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test
    Hostname host1

faça ssh test-host1

e você pode fazer o mesmo para cada host que quiser.

Qualquer host que não seja correspondido por uma entrada em seu arquivo ssh_config (5) usará o comportamento padrão - ou usará os padrões especificados em ssh_config na configuração global, ou seja, não dentro de um bloco de host

ssh_config não suporta correspondência em nomes de usuários, mas você pode escrever um script de shell para detectar isso para você. Aqui está um frágil no bash que assume que seu nome de usuário / host é sempre o primeiro argumento e será quebrado se não for:

ssh() {
    if [[ "$1" =~ ^testuser@ ]]; then
        command ssh -i ~/.ssh/id_rsa-test "$@"
    else
        command ssh "$@"
    fi
}
    
por 27.07.2017 / 02:45