SSH Load key "Invalid format" 에러 처리 - OpenSSH 용 개인키를 RSA 개인키로 변환

원인

OpenSSH 최신 버전에서 ssh-keygen 을 실행하면 다음과 같이 OpenSSH 형식의 개인키(Private Key)가 생성됩니다.

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----


이런 개인키 형식은 특정 app 의 경우에 인식하지 못해서 "Load key '~/.ssh/id_rsa' invalid format" 에러가 나고 사용할 수 없게 됩니다.


방지하려면 키 생성시 RSA Private Key 형식으로 생성하거나 기존 OpenSSH private key 형식을 RSA Private Key 로 변경해야 합니다.

RSA Private key 여부는 개인키 파일(id_rsa) 를 열어서 아래와 같은 헤더가 붙어 있는지 확인해 보면 됩니다.

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA1dknl4rVV7jS8+Wzff9XuPdO44z84UimxQORXmrE+Ah0/q3F
...
-----END RSA PRIVATE KEY-----


조치

키 생성시 RSA 형식 지정

ssh-keygen 으로 키를 생성할 때 -m PEM 옵션을 추가하고 키를 생성하면 RSA 의 형식으로 생성됩니다.

ssh-keygen -m PEM -t rsa -C "lesstif@yourhost"


키 포맷 변환

이미 만들어진 OpenSSH 형식의 키는 포맷을 변경해 주면 되는데 ssh-keygen 에서는 공개키(Public key) 만 변환 가능하고 대신 puttygen 이라는 외부 프로그램이 있어야 개인키 변환이 가능합니다.


ssh-keygen 으로 공개 키를 변환은  아래 명령으로 가능하며 -f 뒤에는 OpenSSH 형식의 키를 적어주며 출력 파이프(>) 에는 RSA Private key 형식으로 저장할 파일의 경로를 적어주면 됩니다.

다음은 id_rsa 를 입력받아서 id_rsa_new_key 로 저장합니다.

ssh-keygen -e -m PEM -f id_rsa > id_rsa_new_key



같이 보기

Ref