sha256 키 일치 확인 (ssh key fingerprint 확인 방법)
내가 보유한 키와, 시스템에 등록된 키가 동일한 것인지 확인할 필요가 생겼습니다.

대부분의 서비스들은 한번 Public Key 가 등록되면 등록여부만 표시할 뿐, 등록된 Public Key의 수정을 허용하지 않습니다.
키 지문을 확인 할 수 있고, 키 삭제가 가능합니다. 보안상의 이유로, 키 수정하기, 원본 Public Key 확인하기는 안됩니다.
이때, 화면에 지문(fingerprint)이라는 것을 표시합니다.
Key FingerPrint 란?
- public key 의 body 를 (sha256 또는 md5) 한 값
- sha256-base64 (현대적) 또는 md5-hex(이전 세대) 형태임.
- fingerprint 는 사람을 위한 값임. 화면 출력이나, 수동 키 비교(관리) 용도. (시스템은 항상 전체 public key body 일치를 비교합니다.)
- 시스템은 당연히 public key 전체를 저장하고 있고, 이것을 사용합니다.
FingerPrint 사용의 장점
- 가독성 : printable string 이라서, 인쇄가 가능하고, 사람이 소리내어 읽을 수 있다.
- 보안성 : fingerprint는 public key body 의 hash 값이라서, hash 값이 유출되어도 원본 public key 를 알 수 없다.
- 쉬운 인지 : 원본 public key body 보다 fingerprint 길이가 짧기 때문에, 사람이 인식하기가 더 쉽다. (대충 45자 내외만 비교할 수 있으면 됨)
수동으로 나의 Public Key 의 fingerprint 계산하기
ssh public-key 는 다음과 같은 형태입니다.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZpuD/y5eHmLyriBuG5dR6VbYFfjF4DoojhGSgrNbeirhzwurtsT7yT1Czqi2lhyoTIVtQBb7L6/YYvLfoTYUVPbLTNe4xl22c2BmrqUfTlpcQ8uJhO0D/lbRfxEY79Z/9RqZJoVaTaIWDIKRRgAjqcyFQAj6yE6TAM3cko0SdbDatKXQokaemsXMpv/mtTGKnVfM2rvg++VPRczt/WPPfaxgXu1fFICadd7I4H2/Lyf6S76a2WNDFbXwYyUsq8aLlY1QjvP5NneY+gQBZf8FQP4rEbtSorwXqxwiIGI6G4R8etLlwYvBBl+91rKwn62jHVWDZV4vkR7yLZeRAcBJ3 tc-m-server
[암호 알고리즘] [인증서 body] [메모/코멘트/키이름]
인증서 body 값을 복사해서 다음과 같이 입력합니다. 리눅스 서버에서 입력하세요.
echo "인증서 body" | base64 -d | sha256sum | cut -d' ' -f1 | xxd -r -p | base64
base64 decode 를 하면 원본 public key (binary) 가 됩니다. 이것을 sha256 하고, 다시 base64 encode 해서 화면에 출력합니다.
이것을 ssh key fingerprint 라고 부릅니다.
base64 padding (=) 문자열이 붙는데, 고려하는 경우도 있고 무시하는 경우도 있습니다. (github는 빼고, aws는 붙이고)
간단하게 key fingerprint 계산하기 (표준 방법)
ssh-keygen -lf [키 파일 경로] -E sha256
public key 또는 private key 를 입력해서 동일한 fingerprint를 얻을 수 있다. private key를 사용해서 public key를 얻을 수 있기 때문에 동일한 결과 값이 표시된다.
sha256 이 기본 값이기 때문에 다음과 같이 입력해도 된다.
ssh-keygen -lf [키 파일 경로]
참고) private key 를 사용해서 public key(id_rsa.pub) 를 생성하는 방법
ssh-keygen -yf [private 키 파일 경로] > id_rsa.pub
AWS EC2 키페어의 경우
AWS EC2 는 오래된 시스템이라서 RSA 의 경우, SHA1 이라는 자체 지문 형식을 사용합니다.
openssl pkcs8 -in mytestkey.pem -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
되도록이면 AWS 에서는 최신의 키 형태인 ed25519 키로만 생성해서, 위의 ssh-keygen -lf [키 파일 경로] -E sha256 명령어로만 관리될 수 있게 하세요.
RSA 유형의 키는 다음 키 교체 시기때, ed25519로 전환 권장.
