Copie as chaves ssh de um servidor para outro servidor

Copie as chaves ssh de um servidor para outro servidor

Eu tenho um servidor (vamos supor que seu ip seja abcd) que permite aos usuários fazer login via ssh. Agora quero mudar a máquina física mantendo o ip igual. Para que a nova máquina ainda seja acessada por um usuário como este

$sshabcd

O problema é que toda vez que um usuário tenta fazer login, ele recebe o seguinte erro de incompatibilidade de chave ssh.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ AVISO: A IDENTIFICAÇÃO DO HOST REMOTO MUDOU! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
É POSSÍVEL QUE ALGUÉM ESTEJA FAZENDO ALGO DESAGRADÁVEL!
Alguém pode estar espionando você agora mesmo (ataque man-in-the-middle)!
Também é possível que a chave do host RSA tenha acabado de ser alterada.
A impressão digital da chave RSA enviada pelo host remoto é
02:dc:c6:18:1b:34:b7:1d:fa:90:ab:e1:95:48:69:84.
Entre em contato com o administrador do sistema.
Adicione a chave de host correta em /home/user/.ssh/known_hosts para se livrar desta mensagem.
Chave ofensiva em /home/user/.ssh/known_hosts:37
A chave de host RSA para ex-alunos foi alterada e você solicitou uma verificação rigorosa.
A verificação da chave do host falhou.

Eu sei que o usuário pode excluir a linha # 37 do arquivo ~/.ssh/known_hosts e da próxima vez ela receberá um prompt sim/não. O que eu quero é que o usuário não fique ciente de toda essa coisa de substituição da máquina e apenas receba uma solicitação de senha.

Como fazer isso?

Responder1

ComoEthabellmencionado, você pode copiar as chaves do host atuais para o novo servidor.

Você pode encontrar suas chaves de host abrindo seu sshd_configarquivo (na minha caixa do Ubuntu 12.04 é /etc/ssh/sshd_config). No arquivo de configuração procure as HostKeyentradas. Essas entradas informarão onde os arquivos de chave do host estão localizados. Você poderá copiar esses arquivos para o novo servidor e atualizar os do novo servidor sshd_configpara apontar para as chaves copiadas (ou apenas substituir os arquivos que já existem no novo servidor).

Além disso, observe esta seção da sshd_configpágina de manual, especificamente a parte sobre permissões:

Especifica um arquivo que contém uma chave de host privada usada pelo SSH. O padrão é /etc/ssh/ssh_host_keypara a versão 1 do protocolo, /etc/ssh/ssh_host_dsa_keye /etc/ssh/ssh_host_ecdsa_keypara /etc/ssh/ssh_host_rsa_keya versão 2 do protocolo. Observe que o sshd(8) se recusará a usar um arquivo se ele for acessível por grupo/mundo. É possível ter vários arquivos de chave de host. As chaves “rsa1” são usadas para a versão 1 e “dsa”, “ecdsa” ou “rsa” são usadas para a versão 2 do protocolo SSH.

Responder2

Se você tivesse a chave do host original, poderia restaurá-la e isso interromperia o erro.

Ou você pode desativar StrictHostKeyChecking em seu arquivo de configuração sshd.

... Fazer isso, entretanto, é uma ideia horrível, horrível. Se houver uma maneira de executar apenas ssh-keygen -R server.example.comem máquinas clientes, essa seria a melhor maneira - porque desativar a verificação da chave do host é como dizer: "Ei. Ataque-me". Eu fico querendo obscuridade quando as coisas mudam, mas a segurança deve ser a prioridade número 1 em relação às mudanças obscuras.

Responder3

Você pode tentar assim

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' 

Observe que se a pasta .ssh ainda não existir, o comando acima falhará. Além disso, pode ser melhor, ao criar o arquivo, definir uma permissão mínima possível (basicamente leitura e gravação apenas para o proprietário). Aqui está um comando mais avançado:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

Para obter mais informações sobre esse problema, você deve acessar este site:Erro de alteração de chave de host SSH

informação relacionada