A situação é que eu já tinha um VPS criado anteriormente. Estava tudo configurado, autenticação de chave privada-pública, login root desativado, login de senha desativado. Tudo foi configurado.
Então este servidor é destruído e um novo servidor é desmembrado.
Então, estou usando ssh -v root@new_server_ip_number
para fazer login nesta instância do Linux recém-instalada e é isso que recebo:
PS C:\Users\roeslermichal> ssh -v [email protected]
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
debug1: Reading configuration data C:\\Users\\roeslermichal/.ssh/config
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to 10.32.81.216 [10.32.81.216] port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_rsa type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_rsa-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_dsa type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_dsa-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa_sk type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519 type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519_sk type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519_sk-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_xmss type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.0
debug1: compat_banner: match: OpenSSH_8.0 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 10.32.81.216:22 as 'root'
debug1: load_hostkeys: fopen C:\\Users\\roeslermichal/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ssh-ed25519 SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk
debug1: load_hostkeys: fopen C:\\Users\\roeslermichal/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.
Please contact your system administrator.
Add correct host key in C:\\Users\\roeslermichal/.ssh/known_hosts to get rid of this message.
Offending RSA key in C:\\Users\\roeslermichal/.ssh/known_hosts:15
Host key for 10.32.81.216 has changed and you have requested strict checking.
Host key verification failed.
O que é essa SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.
linha? O que isso significa?
Porque claramente esse SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.
número/id não é o mesmo número que identifica o servidor linux no meu known_hosts
arquivo do Windows.
Estou usando o laptop Windows e o PowerShell para fazer login neste servidor.
Há um C:\Users\roeslermichal\.ssh\known_hosts
arquivo nesta máquina Windows e eu esperava que alguns IDs não correspondessem, porque o servidor antigo foi destruído e o novo foi criado. Já apaguei a 10.32.81.216 ssh-rsa
chave e a substituí por esta 10.32.81.216 ssh-rsa
chave do servidor linux recém-instalado.
Mas o cliente ssh não me deixa entrar.
É assim que meu :\Users\roeslermichal\.ssh\known_hosts
arquivo atual se parece:
10.32.81.216 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGh8fEmrCov7TLbiKgGasUV3fxbrKmh4Ai/RWixt41Fl
10.32.81.216 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCr43mfkweJAaHQ4kw88b0y5OShnQl91jR1eoUIcnaMRvBEi3X7McVuA+cB+MWk4Rj9EX2hnq6tyB+26weQX0GXWf95CL/yqX5p39b+j8c43CR9/3gHbU5aV+exGBbj2rEL4JgmQD58fHHEsL1r6EMcpTUgY8JqfG0F52XUJrF7KdpxlW4vtgOaHdqooBMHuMi+bR7LRq/moAHLv3svB5PPhIfSbM5CW/Eke4H4qiAwKCVUjyXxKCoKkYVDyfQur+nBMxJssUHy03385hxV0gKo8WGQKlSNvI3B1vP85ij5zCYViYUfs05lXPkpsUqosGqHDOJhPnVRM4OacMQVkj2e0MKHs/cXA1GneBiY99tPMaEL2qZ0UJoaYcnG0krc0owKE6Ufx+84VVqLG7hJHPnNRI3UrFjG/C7lAzAogz5eDiYoQvkko7mLuwRob27fIB39oH2cbH4a4DCcIDekS0WwCPeA+uwaHrmhKJluqP8r7qvDluWax3cVzDGojD7I6cU=
10.32.81.216 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCMktfR/tBD8GYWRWpo8DsoIPPxos+Rt/C1Is04S0Dglm6UbQqQQUW9m9GfDWHZn3j37ZWPGeUwTcWEojKi70yk=
10.32.81.218 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFBuju3Gav0s6Uj8XFQToa/qU7gxsxvKqtUCctWaC4FC
10.32.81.218 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6OCnBNeCfiLcYo7FAmopNBxWS5No+Locw+dxujELxhXn/zAEEnsMv+fZYP8JT8Jj+bYFX1jVAxBubqaz7swK3GCYkkL4C/dI2p7MV0E0ogznbZEZS0GHU3wA69R7s4F56oR3ZeCIas+gfe3mckB4i9UtZMy2IsGSVl974wletCXfdXxhkyRzHlgovoCnAYu9qOS/X2X2yuUNKKfL3VGQNkAih/Hjqh7Iwi36sLS8+WB/sYOk5cxJfycWewTEl1Wt5fB5bbc7Fu0Wmjn2IpMHspoR6YEw2lK/GuFIFjcVoHJ8+7JAuY9BnUdyuAbHLZ8vgrymcGw/ZP8GIhgRq1nOseAQrOzZMFtcGCS953a+L5gP9shX2ZwF/MS7h8+EYPxMNFZP6DbU++c4ZmOlb0lPkUJDhTnSbOoDZA+bfDl5jBlKtfF2V7n+V9Dwuwwbsp/qJyULIeMAdCrpjPhmKhnQASloZsEN5LLjh2gVN+YM7jACHe6ZyFD4/gpEE6N6MUG8=
10.32.81.218 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBonnCuOeQpc7CSRzbps8sLnPYMphNrfqs9h7Hz5I+Ml8QxPBUnlNw749EzqC29KFtyB8XE2SnbOK/CuUnghj5E=
Mas eu realmente não sei o que são essas chaves de host, porque não criei nenhuma chave neste novo servidor linux. A abordagem de login como root foi a primeira ação que fiz em relação a este servidor linux recém-criado. E já tem alguns host_keys
nesse servidor.??? E essas não são chaves ssh públicas-privadas, porque ainda não as criei, então quais são essas chaves que foram geradas e identificam meu novo servidor linux no arquivo do Windows known_hosts
.
Eu li este tópico cuidadosamente algumas vezes, mas não entendo muito bem as respostas dadas lá e por que elas funcionam. Ainda mais, não entendo por que não consigo fazer login no meu servidor linux recém-criado, embora tenha substituído a antiga chave de host rsa do servidor por uma nova chave de host rsa do servidor.
PS C:\Users\roeslermichal> ssh-keyscan -t rsa 10.32.81.216
# 10.32.81.216:22 SSH-2.0-OpenSSH_8.0
10.32.81.216 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCr43mfkweJAaHQ4kw88b0y5OShnQl91jR1eoUIcnaMRvBEi3X7McVuA+cB+MWk4Rj9EX2hnq6tyB+26weQX0GXWf95CL/yqX5p39b+j8c43CR9/3gHbU5aV+exGBbj2rEL4JgmQD58fHHEsL1r6EMcpTUgY8JqfG0F52XUJrF7KdpxlW4vtgOaHdqooBMHuMi+bR7LRq/moAHLv3svB5PPhIfSbM5CW/Eke4H4qiAwKCVUjyXxKCoKkYVDyfQur+nBMxJssUHy03385hxV0gKo8WGQKlSNvI3B1vP85ij5zCYViYUfs05lXPkpsUqosGqHDOJhPnVRM4OacMQVkj2e0MKHs/cXA1GneBiY99tPMaEL2qZ0UJoaYcnG0krc0owKE6Ufx+84VVqLG7hJHPnNRI3UrFjG/C7lAzAogz5eDiYoQvkko7mLuwRob27fIB39oH2cbH4a4DCcIDekS0WwCPeA+uwaHrmhKJluqP8r7qvDluWax3cVzDGojD7I6cU=
Embora eu não tenha substituído a chave 10.32.81.216 ssh-ed25519
nem 10.32.81.216 ecdsa-sha2-nistp256
. Pode ser esse o motivo pelo qual não consigo fazer login?
Há uma autenticação mútua no SSH.
Primeiro, o cliente autentica que o servidor é realmente aquele que ele deseja conectar. Para isso, ele lembra a parte pública do par de chaves do host no
~/.ssh/known_hosts
arquivo. Ele aprende isso durante a primeira conexão (essa é exatamente a parte em que ele pede para você digitar "sim") ou pode aprender com o DNS se ele contiver o registro SSHFP para o host e a zona for protegida por DNSSEC. Se o cliente descobrir que o servidor está apresentando a chave errada, ele normalmente se recusará a se conectar alegando um ataque MitM em andamento.É para isso que serve o par de chaves do host SSH. Grosso modo, é a versão SSH da infraestrutura PKI, embora não seja baseada em CA (ou usa DNSSEC para implementar uma cadeia de confiança semelhante à CA); é como um certificado/par de chaves HTTPS (com o objetivo de "autenticação do servidor da web") e serve ao mesmo propósito. É o par de chaves assimétrico ("público- privado ") que pertence a um servidor.
Em segundo lugar, o servidor autentica que o cliente é realmente quem afirma ser. Para isso, ele pode usar o par de nome de usuário/senha ou qualquer autenticação complexa baseada em chat, ou o par de chaves assimétricas armazenado no servidor em users
~/.ssh/authorized_keys
. Desta vez, o par de chaves pertence a um usuário. Mais uma vez, a PKI baseada em CA tradicional possui certificados de cliente "analógicos" (com o objetivo de "autenticação de cliente da Web").Bem, você vê esta linha em sua saída,
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
? É assim que ele relata o ataque MitM que ele projetou para evitar. Provavelmente é excessivamente cauteloso, mas esta é a sua segurança.Se você tiver certeza absoluta de que não há ataque e a nova impressão digital é a correta, simplesmente remova a linha ofensiva do arquivo known_hosts do seu cliente. Você pode seguir o
conselho de @JaromandaX no comentário ou remover todos os registros ofensivos com algo como
Então você terá que concordar digitando "sim" literal para a pergunta sobre você tem certeza ou usando um
ssh-keyscan
utilitário conforme descrito na outra resposta . Observe que, embora essa maneira de criar o arquivo evite o aviso interativo sobre o MitM, ele ainda é suscetível ao ataque pelo mesmo motivo, que também é observado na página de manual do ssh-keyscan (e também mencionado várias vezes nos comentários ao respostas no link).