다음을 사용하여 공개/개인 키 쌍을 생성했습니다.
ssh-keygen -t rsa -b 2048 -v
그런 다음 .pem 파일이 필요하고 다음을 따르십시오.https://serverfault.com/questions/706336/how-to-get-a-pem-file-from-ssh-key-pair
ssh-keygen -f id_rsa -e -m pem
-----BEGIN RSA PUBLIC KEY-----
그러다가 이걸 발견했어요https://gist.github.com/mingfang/4aba327add0807fa5e7f
openssl rsa -in ~/.ssh/id_rsa -outform pem
-----BEGIN RSA PRIVATE KEY-----
출력이 다른 이유는 무엇입니까?
답변1
OpenSSH는 함수를 호출하여 PEM_write_RSAPublicKey(stdout, k->rsa)
공개 키 자료를 내보내는 반면 OpenSSL은 지정된 개인 키에서 작동합니다. OpenSSH를 사용하면 대부분의 상황은 공개 키를 일부 외부 서버에서 사용할 수 있는 형식으로 변환하는 반면 개인 키는 클라이언트 시스템에서 비공개로 유지되므로 OpenSSH의 공개 키로 작업하는 것이 합리적입니다. 키 쌍 . OpenSSL을 사용하면 "공개 키를 다른 SSH 서버에 적합한 형식으로 변환"하는 문제가 없으므로 코드가 개인 키에서 직접 작동할 수 있습니다. 다른 코드, 다른 의도, 다른 결과.do_convert_to_pem
ssh-keygen.c
답변2
이 명령의 경우 개인 키 대신 공개 키를 출력하려면 openssl rsa
이 플래그가 필요합니다 . -pubout
이를 RSA 공개 키로 출력하려면(이러한 방식으로 ssh-keygen -e
) 다음 -RSAPublicKey_out
플래그를 대신 사용하십시오.
openssl rsa -in id_rsa -outform PEM -RSAPublicKey_out
-----BEGIN RSA PUBLIC KEY-----
이것은 동일한 출력을 제공합니다
ssh-keygen -e -f id_rsa -m pem
-----BEGIN RSA PUBLIC KEY-----
이 명령은 키를 생성하는 원래 명령에 해당 플래그가 포함된 경우 openssl
에만 작동합니다 .ssh-keygen
-m PKCS8