Como usar a chave privada para configurar o ssh sem senha na nova máquina

1

Eu tenho uma máquina que diz source1 e há ssh sem senha definida para mais de 100 servidores, digamos remote1 , remote2 , ... remote100 .

Agora preciso definir uma configuração semelhante de ssh sem senha em outro servidor source2 e não quero copiar a chave pública de source2 para o arquivo authorized_keys de todos os cem servidores.

Posso usar a chave privada do servidor source1 para definir configurações semelhantes em source2 ? Como conseguir isso? Ouvi falar de ssh-agent é uma das formas, mas não consegui entender muito sobre as etapas.

    
por Venom 15.08.2014 / 14:28

2 respostas

1

Se todos os seus remotos tiverem seu próprio usuário root (ou seja, diferentes diretórios /root ), com seu próprio arquivo authorized_keys , você precisará editar todos eles para adicionar uma nova chave:

for remote in $(seq 100); do 
    cat public_key.pub | ssh "remote$remote" tee -a .ssh/authorized_keys
done

No entanto, você também pode enviar a chave privada da fonte1 para source2. Dessa forma, as duas máquinas usarão o mesmo par de chaves (que já está registrado por todos os controles remotos). Eu não acho que isso possa criar qualquer tipo de conflito, mas ter duas chaves parece mais natural para mim. O fato é que, como todas as suas máquinas provavelmente estão na mesma rede e são gerenciadas pelo mesmo usuário, ter uma chave comprometida provavelmente violaria todo o sistema. Portanto, ter dois não traria muito mais segurança (já que um é suficiente para se tornar root em algum lugar).

    
por 15.08.2014 / 14:36
0

A abordagem a ser tomada depende do cenário específico. Seria melhor se já houvesse uma chave que existe no usuário authorized_keys em todos os servidores que podem ser usados para autenticar ao adicionar a nova chave aos hosts remotos, porque senão você terá que digitar sua senha para cada host.

A maneira mais simples de automatizar a cópia de uma chave ssh em uma máquina remota é usar ssh-copy-id e, se você tiver servidores chamados remote1 a remote100 , pode ser feito usando algo como o seguinte:

for server in $(seq -f 'remote%.0f' 1 100); do
    ssh-copy-id -i ~/.ssh/id_rsa "$server"
done

O que levaria automaticamente a chave pública para id_rsa , ssh a todos os servidores em sequência e adicionaria a chave pública a authorized_keys . Se esta é a única chave que você teria nos servidores, você será solicitado a inserir sua senha, já que o programa ssh-copy-id precisa realmente ser ssh nos servidores.

Uma maneira de automatizar ainda mais seria usar algo como expect para automatizar o login com uma senha, já que o cliente ssh do OpenSSH não tem uma opção de linha de comando para especificar a senha ou, alternativamente, usar um wrapper como sshpass .

    
por 15.04.2015 / 23:21

Tags