PEM ssh 키의 지문 RSA private

실행중인 ssh-agent에 추가하는 PEM 파일이 있습니다.

$ file query.pem
query.pem: PEM RSA private key

$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)

$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)

파일에서 직접 키의 지문 (ssh-agent에 표시)을 어떻게 얻을 수 있습니까? 나는 알고있다 ssh-keygen -l -f some_key“정상적인”SSH 키에 대한하지만 PEM 파일에 대한 작품.

.pem 파일에서 ssh-keygen을 시도하면 다음과 같은 결과가 나타납니다.

$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.

이 키는 다음으로 시작합니다.

-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.

다음과 같은 “일반”개인 키와 달리

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.



답변

손실 된 공개 키 파일의 지문을 검색 하려면 개인 키 파일에서 지문을 복구 할 수 있습니다 .

$ ssh-keygen -yf path/to/private_key_file > path/to/store/public_key_file

그런 다음 공개 지문을 확인할 수 있습니다.

$ ssh-keygen -lf path/to/store/public_key_file
2048 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX user@host (RSA)

일부 최신 시스템에서는 키의 SHA256 지문을 인쇄합니다. 옵션을 사용하여 키의 MD5 지문 (콜론 형식)을 인쇄 할 수 있습니다 -E.

$ ssh-keygen -E md5 -lf path/to/store/public_key_file
2048 MD5:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@host (RSA)

또는 하나의 명령 줄로 :

$ ssh-keygen -yf /etc/ssh/ssh_host_ecdsa_key | ssh-keygen -E md5 -lf -
2048 MD5:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@host (RSA)


답변

AWS의 ” 키 페어 지문 확인 “은 키 생성 방식에 따라 문제를 해결하는 2 개의 단일 라이너를 제공합니다.

AWS를 사용하여 키 페어를 생성 한 경우 :

$ openssl pkcs8 -in query.pem -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

또는 타사 도구를 사용하여 키 페어를 만든 경우 :

$ openssl rsa -in query.pem -pubout -outform DER | openssl md5 -c
writing RSA key
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

(위 출력에서 ​​수정 된 지문)


답변

다음은 공개 키 파일을 로컬로 만들 필요없이 원하는 작업을 수행하는 하나의 라이너입니다.

$ ssh-keygen -lf /dev/stdin <<< $( ssh-keygen -f ~/.ssh/keyname.pem -y )
2048 14:df:c7:b7:f1:26:7f:87:d5:e7:10:6c:ac:af:a2:03 /dev/stdin (RSA)

이것은 <<<파일 에서만 작동 /dev/stdin하는 파이프 대신 표준 파일 ( ) 로 stdin을 사용할 수 있도록 bash here 문자열 을 사용 ssh-keygen합니다.

현재로 릴리스의 OpenSSH 7.2 ssh-keygen 표준 입력에서 지문 지원 :

  • ssh-keygen (1) : 표준 입력에서 지문을 입력 할 수 있습니다 (예 : “ssh-keygen -lf-“).

이 명령은 암호를 사용하고 에이전트를 사용하지 않는 개인 키와는 관련이 없습니다. 암호 문구를 사용하지 않는 AWS 또는 OpenStack에서 생성 한 pem 파일과 함께 작동해야합니다.

자세한 내용은 https://stackoverflow.com/questions/2635360/ssh-keygen-accepting-stdin 을 참조 하십시오 .


답변

개인 키 파일이 아닌 공개 키 파일에서 지문을 얻습니다.

실제로 ssh-keygen은 이미 다음과 같이 말했습니다.

./query.pem은 공개 키 파일이 아닙니다.

키의 공개 절반에 대해 실행하면 작동합니다.

더 일반적으로 말하면

지문이 존재하는 이유는 공개 키를 식별 할 수 있기 때문입니다. 실제로, 개인 키의 해시를 얻는 것은 서버에 쓸모가 없다는 것 외에도 잠재적 인 보안 문제입니다 (문제의 개인 키가없는 경우도 있음).

공개 키가 있으면 프로세스는 클라이언트가 해당 개인 절반을 보류하는지 확인하는 것입니다. 확인하려는 키를 이미 알고 있으므로 지문이 필요하지 않습니다.


답변