ssh-keygen으로 ssh 핑거프린트를 확인해봅시다

 

ssh 키 핑거프린트란?

SSH 키페어는 공개키/비밀키로 구성됩니다. 여기서 핑거프린트(fingerprint, 지문)는 공개키의 지문을 나타냅니다. 이 핑거프린트를 이용해 SSH 공개키를 검증할 수 있습니다.

SSH로 원격 호스트에 접속하려고 할 때, 호스트의 공개키 핑거프린트를 확인하고, ~/.ssh/known_hosts에 추가하게 됩니다. 이때 서버의 공개키 검증을 생략하면 중간자 공격(MITM)의 위험성이 있습니다.

 

ssh 키 핑거프린트 확인하기

❯ ssh-keygen -f ~/.ssh/temp
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/vince/.ssh/temp
Your public key has been saved in /Users/vince/.ssh/temp.pub
The key fingerprint is:
SHA256:CN+uGTKtgcoWk0e0pUpfx1/7GPB0EFt+2xV3XXKbhJo vince@vince-PC.local
The key's randomart image is:
+---[RSA 3072]----+
|           ...ooB|
|   . .     .+..oB|
|  . = .    .+. +.|
| . + + = . E .. +|
|. = . + S = o  ..|
| = + . . . +     |
|  = + o .   +    |
|.o   = +   . .   |
|o.  . o          |
+----[SHA256]-----+

테스트용으로 임시 ssh key를 만들어봅시다.

잘 보면 사실 키를 생성할 때 "The key fingerprint is: ..." 하고 나옵니다.

 

❯ ssh-keygen -l -f temp
3072 SHA256:CN+uGTKtgcoWk0e0pUpfx1/7GPB0EFt+2xV3XXKbhJo vince@vince-PC.local (RSA)


# ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]

공개키 확인 역시 ssh-keygen으로 할 수 있습니다. -l 옵션은 지정한 공개키의 핑거프린트를 출력합니다. -f로 공개키 파일을 지정할 수 있습니다. RSA/DSA 키라면 비밀키를 지정했을 때 매칭되는 공개키를 알아서 찾습니다.

 

❯ ssh-keygen -l -E md5 -f temp
3072 MD5:5b:cd:80:56:6c:35:d3:ce:52:5a:af:3e:23:7b:ca:a4 vince@vince-PC.local (RSA)


     -E fingerprint_hash
             Specifies the hash algorithm used when displaying key fingerprints.  Valid options
             are: “md5” and “sha256”.  The default is “sha256”.

-E로 핑거프린트 해시 알고리즘을 선택할 수 있습니다. 기본은 sha256이고, md5도 선택 가능합니다.

 

❯ ssh-keygen -l -f temp -v
3072 SHA256:CN+uGTKtgcoWk0e0pUpfx1/7GPB0EFt+2xV3XXKbhJo vince@vince-PC.local (RSA)
+---[RSA 3072]----+
|           ...ooB|
|   . .     .+..oB|
|  . = .    .+. +.|
| . + + = . E .. +|
|. = . + S = o  ..|
| = + . . . +     |
|  = + o .   +    |
|.o   = +   . .   |
|o.  . o          |
+----[SHA256]-----+

-v 옵션을 추가하면 키의 아스키 아트(randomart)를 볼 수 있습니다.

반응형