Adicionando is_rsa.pub público a known_hosts automaticamente - como?

4

Como adicionar automaticamente o servidor a known_hosts? (e não usar impressão digital md5, como quero dizer maneira segura, por favor não enviar soluções "auto sim / aceitar". Eu quero trazer credenciais necessárias de servidor para máquina)

Gostaria de atualizar automaticamente meu arquivo ssh known_hosts para aceitar o novo servidor.

Suponho que preciso adicionar a chave pública do servidor ( id_rsa.pub obtido por meio do canal seguro), mas o que eu vejo é que o formato é diferente (tentei adicionar como awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts com a verificação com falha. Observe que eu não quero usar a impressão digital md5 devido a falhas no md5). Se algo mais do que id_rsa.pub for útil, posso executar comandos no servidor e obter resultados através de um canal confiável. (Por favor, note que não é canal de rede (pense em trazer fisicamente pendrive de lugar para outro), então ssh-keyscan não resolve o problema, o que é mais id_rsa.pub é a chave do servidor dropbear que não está rodando no servidor, apenas arquivos com chaves estão disponíveis, não o servidor)

    
por Grzegorz Wierzowiecki 07.05.2014 / 13:37

1 resposta

7

O nome id_rsa.pub parece uma chave pública do usuário. Isso não tem nada a ver com known_hosts - known_hosts armazena as chaves do host. Chaves de host, como o nome indica, autenticam um host (ou seja, um computador), enquanto as chaves de usuário autenticam um usuário. As chaves públicas do host do OpenSSH geralmente estão localizadas em /etc ou /etc/ssh e chamadas algo como ssh_host_rsa_key.pub .

O Dropbear possui um único arquivo contendo a chave privada. Para extrair a chave pública (em um formato compatível entre Dropbear e OpenSSH), execute

dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub

Eu não acho que o OpenSSH venha com um comando para atualizar o arquivo known_hosts . É fácil de fazer manualmente:

echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts

Se você quiser nomes de host hash (para que alguém que leia seu arquivo known_hosts não possa saber os nomes desses servidores - é um ganho de privacidade muito menor), execute ssh-keygen -H posteriormente.

    
por 08.05.2014 / 05:06

Tags