ssh-keygen 공개 키를 openssl PEM_read_bio_RSA_PUBKEY () 함수가 사용하는 형식으로 변환하는 방법은 무엇입니까? 계속 오류가 발생합니다. 분명히

openssl PEM_read_bio_RSA_PUBKEY()함수가 사용할 수 있는 공개 키를 생성하는 데 문제 가 있습니다. 계속 오류가 발생합니다.

분명히 ssh-keygen <>.pubSSH 파일 형식이거나 SubjectPublicKeyInfo구조 일 수 있으므로 키 파일 에서 ASCII 문자열을 사용할 수는 없습니다 .

핵심 gen 코드는 다음과 같습니다. ssh-keygen -t rsa -b 1024 -C "Test Key"

웹에서 PHP로 공개 키의 내용을 base64 PEM ASCII 문자열 형식으로 변환하는 변환기를 찾았습니다. 그러나이 기능은 여전히 ​​좋아하지 않습니다.

Openssl 설명서에는 다음이 명시되어 있습니다.

  1. “EVP_PKEY 구조를 사용하여 공개 키를 처리하는 RSA_PUBKEY () 함수”
  2. “RSA_PUBKEY 함수는 RSA 구조를 사용하여 RSA 공개 키를 처리합니다”

OpenSSL 기능이 사용하는 형식으로 OpenSSH 공개 키를 가져 오려면 어떻게합니까?



답변

승인!

그래서 나는 “쉽게, 나는 이것을 얻었다”라는 생각에 들어갔다. 내가 생각했던 것보다 훨씬 더 많은 것이 있다는 것이 밝혀졌습니다.

따라서 첫 번째 문제는 OpenSSL (man 3 pem) 매뉴얼 페이지에 따르면 RSA 키가 PKCS # 1 형식 일 것으로 예상한다는 것입니다. 분명히 이것은 ssh-keygen이 작동하는 것이 아닙니다. 두 가지 옵션이 있습니다 (검색 중).

OpenSSH v. 5.6 이상 (노트북에없는 경우)이있는 경우 다음을 실행할 수 있습니다.

ssh-keygen -f key.pub -e -m pem

더 긴 방법은 SSH 키를 다양한 구성 요소로 분리하는 것입니다 ( 블로그 항목 은 OpenSSH가 “독점적”이라고 비난했습니다. “독특하다”고 선호합니다). 그리고 ASN1 라이브러리를 사용하십시오. 사물을 교환합니다.

다행스럽게도 누군가가 코드를 작성했습니다.

https://gist.github.com/1024558


답변

SSH 개인 키가 있다고 가정하면 다음 id_rsa과 같이 공개 키를 추출 할 수 있습니다.

openssl rsa -in id_rsa -pubout -out id_rsa.pub.pem

OP가 공개 키 변환에 대해 물었 으므로이 질문에 대답하지는 못했지만 어쨌든 도움이 될 것이라고 생각했습니다.

또한이 명령의 결과로 PEM 공개 키 형식이 생성되며 이는 일반적으로 OpenSSL이 기대하는 것입니다. 반면에 Brian의 대답은 RSAPublicKey 형식의 파일을 생성하는데, OpenSSL에서 예상되는 일반적인 형식이 아닙니다 (이후 버전에서는 -RSAPublicKey_in플래그 를 통해 파일을 읽을 수 있음 ). 변환하려면 다음을 수행하십시오.

openssl rsa -RSAPublicKey_in -in id_rsa.rsapub.pem -pubout -out id_rsa.pub.pem


답변

원하는 형식이 ssh-keygen호출 PKCS8됩니다. 따라서 다음 명령은 원하는 출력을 생성합니다.

ssh-keygen -f key.pub -e -m pkcs8

로부터 ssh-keygen매뉴얼 페이지

-m key_format
         Specify a key format for the -i (import) or -e (export) conversion
         options.  The supported key formats are:
         ``RFC4716'' (RFC 4716/SSH2 public or private key),
         ``PKCS8'' (PEM PKCS8 public key) or
         ``PEM'' (PEM public key).
         The default conversion format is ``RFC4716''.


답변

아래의 Amal Chaudhuri의 방법과 유사하게 이것이 나를 위해 일한 것입니다. SFTP 클라이언트 (Cyberduck)에 대해 생성 한 ssh 공개 키에서 pem 파일을 만들어야했습니다.

openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem


답변

다른 사이트에서이를 수행하는 다른 방법입니다. 다른 방법이 필요한 경우에 게시하십시오. 잘 작동합니다.
http://www.chatur.com.np/2011/01/convert-openssh-rsa-key-to-pem-format.html

openssl dsa -in ~/.ssh/id_dsa -outform pem > id_dsa.pem


답변