SSH 키 지문이란 무엇이며 어떻게 생성됩니까?

SSH 키 지문이란 무엇이며 어떻게 생성됩니까?

ssh나는 새 컴퓨터를 사용할 때 항상 다음과 같은 메시지를 받는다는 것을 발견했습니다 .

12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53

그것은 무엇을 의미합니까? 모든 기계가 매번 동일한 지문을 갖게 되나요?

이러한 지문은 어떻게 생성되나요? 어떤 매개 변수에 의존합니까?

답변1

지문은 일반적으로 파일을 기반으로 하는 호스트의 공개 키를 기반으로 합니다 /etc/ssh/ssh_host_rsa_key.pub. 일반적으로 연결하려는 호스트를 쉽게 식별/검증하기 위한 것입니다.

지문이 변경되면 연결하려는 컴퓨터의 공개 키가 변경된 것입니다. 이는 나쁜 일이 아닐 수도 있지만(ssh 재설치로 인해 발생함) 동일한 도메인/IP의 다른 시스템에 연결하고 있음(로드 밸런서와 같은 것을 통해 연결할 때 발생함)을 나타낼 수도 있습니다. 당신은 공격자가 당신의 사용자 이름/비밀번호를 스누핑할 수 있는 다른 호스트에 연결하기 위해 어떻게든 당신의 SSH 연결을 가로채거나 경로를 재설정하는 중간자 공격의 표적이 되고 있습니다.

요점:변경된 지문에 대한 경고를 받으면 주의를 기울이고 실제로 보안 연결을 통해 올바른 호스트에 연결하고 있는지 다시 확인하세요. 대부분의 경우 이는 무해하지만 잠재적인 문제를 나타낼 수 있습니다.

보다:http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
그리고:http://en.wikipedia.org/wiki/Public_key_fingerprint

답변2

다음과 같이 공개 키에 대한 지문을 생성할 수 있습니다 ssh-keygen.

ssh-keygen -lf /path/to/key.pub

구체적인 예(RSA 공개 키를 사용하는 경우):

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

첫 번째 부분 (2048)은 키 길이(비트)이고, 두 번째 부분 (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)은 공개 키의 지문이며, 세 번째 부분은 공개 키 파일 자체의 위치입니다.

최신 버전의 OpenSSH에서는 16진수 MD5 대신 Base64로 인코딩된 SHA-256이 표시됩니다. 레거시 스타일 해시를 표시하려면 다음을 사용하십시오.

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub

답변3

지문은 Base64로 인코딩된 공개 키 내의 이진 데이터에 대한 MD5입니다.

$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
|       +*..+*    |
|      =. +.=     |
|     . . .o .    |
|         o+   E  |
|        S= . + o |
|        . o o +  |
|           .   . |
|                 |
|                 |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

md5sum 6530389635564f6464e8e3a47d593e19는 키가 생성될 때 표시되는 지문이며 구분하는 콜론만 없습니다.


그러나 Amazon이 EC2 키 쌍 콘솔에 표시하는 지문을 처리하는 경우, 불행하게도 그건 다른 짐승일지도 몰라. 32자리 16진수 문자열인 경우 위의 표준 MD5 SSH 공개 키 지문입니다. 하지만 40자리 16진수라면 실제로는 SHA1을 가져와서 계산한 지문입니다.개인 키PKCS#8 형식:

$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58

답변4

Azure Devops에 있는 지문을 확인하려면 다음을 사용할 수 있습니다.

$ ssh-keygen -E md5 -lf .ssh/id_rsa.pub
2048 MD5:ba:42:24:87:d6:7b:71:a2:3e:b5:9a:31:b2:2c:e0:00 CrazyGirrafe@Australasia (RSA)

관련 정보