Copia chaves ssh de um servidor para outro servidor

8

Eu tenho um servidor (suponha que seu ip seja a.b.c.d), que permite que os usuários façam login via ssh. Agora eu quero mudar a máquina física mantendo o ip mesmo. Para que a nova máquina ainda seja acessada por um usuário como este

$ssh a.b.c.d

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
02:dc:c6:18:1b:34:b7:1d:fa:90:ab:e1:95:48:69:84.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:37
RSA host key for alumni has changed and you have requested strict checking.
Host key verification failed.

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

Como fazer isso?

    
por Souvik Pal 10.01.2013 / 16:13

3 respostas

12

Como Ethabell mencionado, você pode copiar as chaves de host atuais para o novo servidor.

Você pode encontrar suas chaves de host abrindo o arquivo sshd_config (na minha caixa Ubuntu 12.04 é /etc/ssh/sshd_config ). No arquivo de configuração, procure as entradas HostKey . Essas entradas dirão onde os arquivos da chave do host estão localizados. Você deve conseguir copiar esses arquivos para o novo servidor e atualizar o sshd_config do novo servidor para apontar para as chaves copiadas (ou simplesmente sobrescrever os arquivos que já existem no novo servidor).

Além disso, observe esta seção na página sshd_config man, especificamente na parte sobre permissões:

Specifies a file containing a private host key used by SSH. The default is /etc/ssh/ssh_host_key for protocol version 1, and /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key and /etc/ssh/ssh_host_rsa_key for protocol version 2. Note that sshd(8) will refuse to use a file if it is group/world-accessible. It is possible to have multiple host key files. “rsa1” keys are used for version 1 and “dsa”, “ecdsa” or “rsa” are used for version 2 of the SSH protocol.

    
por 10.01.2013 / 17:35
1

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

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

... Fazer isso, no entanto, é uma idéia horrível e terrível. Se existe uma maneira de você executar apenas ssh-keygen -R server.example.com em máquinas clientes, essa seria a melhor maneira - desligar a verificação da chave do host é como dizer: "Ei, ataque-me". Eu estou querendo a obscuridade quando as coisas mudam, mas a segurança deve ser a prioridade número 1 em vez de obscurecer as mudanças.

    
por 10.01.2013 / 16:38
0

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 para definir uma permissão mínima possível (basicamente ler e escrever somente 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 mais informações sobre este problema, você precisa acessar este site: Erro de alteração da chave do host SSH

    
por 29.05.2015 / 07:44

Tags