%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0%20%EA%B3%B5%EA%B0%9C-%EA%B0%9C%EC%9D%B8%20%ED%82%A4%20%EC%8C%8D%EA%B3%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%8B%A4%EB%A6%85%EB%8B%88%EA%B9%8C%3F.png)
상황은 이전에 VPS를 만든 적이 있다는 것입니다. 모든 설정이 완료되었으며 개인-공개 키 인증, 루트 로그인이 꺼지고 비밀번호 로그인이 꺼졌습니다. 모든 것이 설정되었습니다.
그러면 이 서버는 파괴되고 새로운 서버가 분리됩니다.
그래서 저는 ssh -v root@new_server_ip_number
새로 설치된 Linux 인스턴스에 로그인하는 데 사용하고 있으며 다음과 같은 결과를 얻습니다.
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.
이 줄은 무엇입니까 SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.
? 무슨 뜻이에요?
분명히 이 번호/ID는 내 Windows 파일 SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.
에서 Linux 서버를 식별하는 번호와 동일하지 않기 때문입니다.known_hosts
저는 Windows 노트북과 PowerShell을 사용하여 이 서버에 로그인하고 있습니다. 이 Windows 컴퓨터에 파일이
있는데 C:\Users\roeslermichal\.ssh\known_hosts
이전 서버가 파괴되고 새 서버가 생성되었기 때문에 일부 ID가 일치하지 않을 것으로 예상했습니다. 이미 키를 삭제했고 새로 설치된 Linux 서버의 10.32.81.216 ssh-rsa
이 키로 교체했습니다 . 하지만 ssh-client는 나를 들여보내지 않습니다. 현재 파일은 다음과 같습니다.10.32.81.216 ssh-rsa
:\Users\roeslermichal\.ssh\known_hosts
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=
하지만 저는 이 새로운 Linux 서버에 어떤 키도 생성하지 않았기 때문에 해당 호스트 키가 무엇인지 잘 모릅니다. 루트로 로그인 접근 방식은 새로 생성된 Linux 서버와 관련하여 내가 취한 첫 번째 작업이었습니다. 그리고 host_keys
이 서버에는 이미 일부가 있습니다 .??? 그리고 이것은 아직 생성하지 않았기 때문에 개인-공용 SSH 키가 아닙니다. 생성된 키는 무엇이며 Windows known_hosts
파일에서 새 Linux 서버를 식별합니다.
나는 읽었다이 스레드여러 번 주의 깊게 읽어보았지만 거기에 제공된 답변과 작동 이유를 잘 이해하지 못했습니다. 더욱이 이전 서버 rsa 호스트 키를 새 서버 rsa 호스트 키로 교체했지만 새로 만든 Linux 서버에 로그인할 수 없는 이유를 이해하지 못합니다.
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=
10.32.81.216 ssh-ed25519
nor 키를 교체하지는 않았지만 10.32.81.216 ecdsa-sha2-nistp256
. 이것이 로그인할 수 없는 이유일까요?
답변1
SSH에는 상호 인증이 있습니다.
첫째,고객서버가 실제로 연결하려는 서버인지 인증합니다. 이를 위해 파일에 있는 호스트 키 쌍의 공개 부분을 기억합니다 ~/.ssh/known_hosts
. 첫 번째 연결 중에(정확히 "예"를 입력하도록 요청하는 부분임) 또는 호스트에 대한 SSHFP 레코드가 포함되어 있고 영역이 DNSSEC로 보호되어 있는지 DNS에서 학습할 수 있습니다. 클라이언트가 서버가 잘못된 키를 제공하고 있음을 알게 되면 일반적으로 진행 중인 MitM 공격을 주장하며 연결을 거부합니다.
이것이 바로 SSH 호스트 키 쌍의 용도입니다. CA 기반 인프라는 아니지만 대략적으로 말하자면 PKI 인프라의 SSH 버전입니다(또는 DNSSEC를 사용하여 CA와 유사한 신뢰 체인을 구현합니다). 이는 HTTPS 인증서/키 쌍("웹 서버 인증" 목적)과 같으며 동일한 목적을 제공합니다. 그것~이다서버에 속하는 비대칭("공개-개인") 키 쌍입니다.
둘째,섬기는 사람클라이언트가 실제로 주장하는 사람인지 확인합니다. 이를 위해 사용자 이름/비밀번호 쌍이나 복잡한 채팅 기반 인증 또는 users 의 서버에 저장된 비대칭 키 쌍을 사용할 수 있습니다 ~/.ssh/authorized_keys
. 이번에는 키 쌍이 사용자에게 속합니다. 다시 말하지만, 기존 CA 기반 PKI에는 "아날로그" 클라이언트 인증서("웹 클라이언트 인증" 목적)가 있습니다.
출력에 다음 줄이 보이나요 Someone could be eavesdropping on you right now (man-in-the-middle attack)!
? 이것이 방지하도록 설계된 MitM 공격을 보고하는 방법입니다. 어쩌면 지나치게 조심스러운 것일 수도 있지만 이것이 당신의 보안입니다.
만약 당신이절대적으로 확신공격이 없고 새 지문이 정확하다면 클라이언트의 Known_hosts 파일에서 문제가 있는 줄을 제거하기만 하면 됩니다.
댓글의 @JaromandaX 조언을 따르 거나 다음과 같이 문제가 되는 모든 기록을 제거할 수 있습니다.
ssh-keygen -R 10.32.81.216
ssh-keyscan
그런 다음 확실하다는 질문에 문자 그대로 "예"를 입력하거나 설명된 대로 유틸리티를 사용하여 동의해야 합니다.다른 답변에서는. 이 파일 빌드 방법은 MitM에 대한 대화형 경고를 방지하지만,아직은 공격에 취약하다같은 이유로 ssh-keyscan의 매뉴얼 페이지에도 언급되어 있습니다(그리고 링크 아래 답변에 대한 설명에서도 여러 번 언급되었습니다).