Quando é executado
ssh -i id_rsa_something [email protected]
parece:
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:ABCABC [fixed/changed].
Are you sure you want to continue connecting (yes/no)?
Se eu escrever sim, posso obter acesso ao servidor remoto por meio de SSH. Portanto, até aqui a configuração SSH para conexões remotas funciona conforme o esperado. Além disso no .ssh/known_hosts
arquivo, no cliente , foi adicionado:
192.168.1.2 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo...
Assim o cliente sabe através do .ssh/known_hosts
arquivo que possui um servidor confiável e no lado do servidor através do .ssh/authorized_keys
arquivo existe uma cópia da chave pública do cliente. Até aqui a conexão de segurança pode ser estabelecida em paz entre o cliente e o servidor.
Eu pensei que é a única abordagem lógica para estabelecer uma conexão entre o cliente e o servidor (vamos chamar isso de primeira abordagem ). Quer dizer, gerar chaves, copiar a chave pública para o servidor e por fim fazer a conexão como primeiro comando compartilhado (mesmo com o Agente SSH rodando ou não).
Agora, fiz uma pesquisa nas filiais do StackExchange sobre como deletar uma impressão digital no lado do cliente, ela através do ssh-agent -R hostname
comando que afeta o .ssh/known_hosts
arquivo e gera o known_hosts.old
arquivo e funciona, mas nas soluções postadas aparece quantas informações extras muitas vezes o ssh-keyscan
para adicionar o impressão digital do host no .ssh/known_hosts
arquivo - fiz uma pesquisa sobre isso, e os tutoriais só ensinam como usar - não consegui encontrar uma razão sólida sobre quando seria o uso obrigatório ssh-keyscan
na primeira abordagem
Os resultados de adicionar a chave do host ao
known_hosts
uso explícitossh-keyscan
ou ao conectar usandossh
são tecnicamente os mesmos.Embora
ssh-keyscan
realmente não lhe dê a chance de verificar se a chave do host é válida. Portanto, você teria que verificar ex-post o conteúdo doknown_hosts
, eventualmente removendo a chave se for uma chave de um servidor malicioso. Tambémknown_hosts
contém uma chave completa, que dificilmente você pode verificar. Pelo contrário,ssh
mostra uma impressão digital da chave do host, que é mais fácil de verificar.