OpenSSL을 사용하여 공개 키를 추출하는 방법은 무엇입니까?


120

다음 명령은 공개 및 개인 키를 모두 포함하는 파일을 생성합니다.

openssl genrsa -des3 -out privkey.pem 2048

출처 : 여기

OpenSSL을 사용하면 개인 키에 공개 키 정보도 포함되므로 공개 키를 별도로 생성 할 필요가 없습니다.

privkey.pem 파일에서 공개 키를 어떻게 추출 할 수 있습니까?

감사.


이 온라인 도구는 멋진 8gwifi.org/pempublic.jsp
아니시

답변:


188
openssl rsa -in privkey.pem -pubout > key.pub

공개 키를 key.pub


23
이를 수행하려면 항상 내부 옵션을 사용하는 것이 좋습니다. -out예 : openssl rsa -in privkey.pem -pubout -out key.pubstdout을 파일로 리디렉션하는 대신.
Juan Antonio

138

위의 기술은 일반적인 경우에는 작동하지만 Amazon Web Services (AWS) PEM 파일에서는 작동하지 않았습니다.

AWS 문서에서 다음 명령이 작동한다는 것을 알았습니다. ssh-keygen -y

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

전체 라인에 대해 감사합니다 @makenova 편집 :

ssh-keygen -y -f key.pem > key.pub

38
감사. 이것은 내가 필요로하는 것입니다. 프롬프트를 건너 뛰려면 다음을 사용할 수 있습니다.ssh-keygen -y -f key.pem > key.pub
makenova

5
이 정답이다ssh-keygen -y -f key.pem
저스틴

1
이 암호 저를 요구하고있다,하지만 난 어떤 암호 넣지 않았다
kavain

1
@makenova 그러면 에서 키 가 다시 생성되어 해당 키 key.pem가 필요한 인스턴스에 로그인하지 못할 수 있습니다!
SubmittedDenied

입력하지 않은 암호를 묻는 @kavain과 동일한 문제가 발생하고에서 키를 사용 하는 경우 공개 키가 아닌 개인 키에 연결되어ssh -i 있는지 확인하십시오
aexl

5

세부 사항에 관심이있는 사람들을 위해 다음을 수행하여 공개 키 파일 (위에 설명 된대로 생성됨)의 내용을 볼 수 있습니다.

openssl rsa -noout -text -inform PEM -in key.pub -pubin

또는 개인 키 파일의 경우 다음과 같습니다.

openssl rsa -noout -text -in key.private

키의 실제 구성 요소 (모듈러스, 지수, 소수 등)를 콘솔에 텍스트로 출력합니다.


2

Amazon AWS .pem키 쌍을 다른 리전 에 복사하는 방법을 찾고 있다면 다음을 수행하십시오.

openssl rsa -in .ssh/amazon-aws.pem -pubout > .ssh/amazon-aws.pub

그때

aws ec2 import-key-pair --key-name amazon-aws --public-key-material '$(cat .ssh/amazon-aws.pub)' --region us-west-2

2
의 공개 키 출력 openssl은 PEM 헤더에 삽입되어 있으며 AWS CLI가 키를 수락하기 전에 제거해야합니다.
JP

2

AWS가 기존 공개 키를 가져 오는 경우

  1. .pem에서 내보내기 ... (리눅스에서)

    openssl rsa -in ./AWSGeneratedKey.pem -pubout -out PublicKey.pub
    

이렇게하면 다음과 같은 텍스트 편집기에서 열면 파일이 생성됩니다.

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. 그러나 AWS는이 파일을 허용하지 않습니다.

    당신은 벗기고해야 -----BEGIN PUBLIC KEY-----하고 -----END PUBLIC KEY-----파일에서. 저장하고 가져 오면 AWS에서 작동합니다.


4
ssh-rsa AAAAB3NzaC1y....실행을 위해이 형식을 변환해야하는 경우 :ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.