Como adicionar automaticamente o servidor aknown_hosts? (e não use impressão digital md5, como quero dizer de forma segura, por favor, não envie soluções "sim/aceitar automaticamente". Quero trazer as credenciais necessárias do servidor para a máquina)
Gostaria de atualizar automaticamente meu known_hosts
arquivo ssh para aceitar o novo servidor.
Presumo que preciso adicionar a chave pública do servidor ( id_rsa.pub
obtida através de canal seguro), mas o que vejo é que o formato é diferente (tentei adicionar assim awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts
com falha na verificação. Observe que não quero usar md5 impressão digital devido a falhas no md5). Se algo diferente id_rsa.pub
for útil, posso executar comandos no servidor e obter resultados por meio de um canal confiável. (Observe que não é um canal de rede (pense em trazer fisicamente o pendrive de um lugar para outro), então ssh-keyscan
não resolve o problema, além do mais id_rsa.pub é a chave do servidor dropbear que não está rodando no servidor, então apenas arquivos com chaves estão disponíveis, não no servidor)
Responder1
O nome id_rsa.pub
se parece com a chave pública de um usuário. Isso não tem nada a ver com known_hosts
- known_hosts
armazena chaves de host. As 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 normalmente estão localizadas em /etc
ou /etc/ssh
e são chamadas de algo como ssh_host_rsa_key.pub
.
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
Não acho que o OpenSSH venha com um comando para atualizar o known_hosts
arquivo. É bastante fácil de fazer manualmente:
echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts
Se você quiser fazer hash de nomes de host (para que alguém que leia seu known_hosts
arquivo não possa saber os nomes desses servidores - é um ganho de privacidade muito pequeno), execute ssh-keygen -H
depois.