OpenSSH 개인 키를 SSH2 개인 키로 변환


29

기존 OpenSSH 키 쌍을 SSH2 (ssh.com 형식) 키 쌍으로 변환하는 방법이 있습니까?

UPD : ssh-keygen갑자기 나타나는 것에 대한 답변이 있기 때문에 내가 어디에서 왔는지 설명 할 것입니다 (또한 "어떻게 시도 했습니까?"

$> diff --report-identical-files <(ssh-keygen -e -f ~/.ssh/id_dsa) <(ssh-keygen -e -f ~/.ssh/id_dsa.pub)
Files /tmp/zshAGGWAK and /tmp/zshPZiIr6 are identical

즉, ssh-keygen개인 및 공개 입력 키에 대해 동일한 키를 반환합니다 (원래 파일의 해시는 분명히 다릅니다. 유효한 개인 및 공개 키인지 확인하기 위해 두 번 확인했습니다). ssh-keygen개인 또는 공개 입력 키에 대한 공개 키만 생성 하는 것 같습니다 .

내가 잘못하고 있거나 정상적인 행동입니까?

답변:


43

이 튜토리얼 제목 : SSH : OpenSSH를 SSH2로 변환하고 그 반대로도 원하는 것을 제공하는 것으로 보입니다.

OpenSSH 키를 SSH2 키로 변환

ssh-keygenOpenSSH 공개 키 에서 OpenSSH 버전을 실행하여 원격 시스템의 SSH2에 필요한 형식으로 변환하십시오. OpenSSH를 실행하는 시스템에서 수행해야합니다.

$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub

SSH2 키를 OpenSSH 키로 변환

ssh-keygenssh2 공개 키 에서 OpenSSH 버전을 실행하여 OpenSSH 에 필요한 형식으로 변환하십시오. OpenSSH를 실행하는 시스템에서 수행해야합니다.

$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub

이 튜토리얼에서는 다양한 유형의 키를 생성하는 방법과 다른 형식으로 내보내는 방법을 보여줍니다.

개인 및 공개 키에 사용 하시겠습니까?

매뉴얼 페이지에 따르면 대답은 '예'입니다. 매뉴얼 페이지를 ssh-keygen보면 -e스위치에 대해 다음을 나타냅니다 .

 -e    This option will read a private or public OpenSSH key file and print
       the key in RFC 4716 SSH Public Key File Format to stdout.  This option
       allows exporting keys for use by several commercial SSH implementations.

그러나 실제로는 ssh-keygen개인 키를 변환 할 수 없으며 공개 키만 변환 할 수 있습니다.

예를 들면 다음과 같습니다.

# Make a new RSA key-pair
$ ssh-keygen -t rsa -f newkey

# attempt to extract the private key
$ ssh-keygen -e -f newkey > newkey_e

# attempt to extract the public key
$ ssh-keygen -e -f newkey.pub > newkey.pub_e

# Notice the supposed extracted private key (newkey_e) and the corresponding extracted public key (newkey.pub_e) have identical `md5sum`'s.
$ for i in *;do md5sum $i;done
d1bd1c12c4a2b9fee4b5f8f83150cf1a  newkey
8b67a7be646918afc7a041119e863be5  newkey_e
13947789d5dcc5322768bd8a2d3f562a  newkey.pub
8b67a7be646918afc7a041119e863be5  newkey.pub_e

추출 된 결과 키를 보면 다음이 확인됩니다.

$ grep BEGIN newkey_e newkey.pub_e 
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----

조금 인터넷 검색을 나는 제목의 기사에서이 추천 광고 건너 온 : 당신은 SSH에 OpenSSH의 개인 키 파일을 변환 할 방법 . 사이트가 위아래로 보이지만 이 페이지에 대한 Google의 캐시를 살펴보면 다음과 같은 문제점이 발견되었습니다.

OpenSSH 개인 키 파일을 SSH.com 개인 키 파일로 어떻게 변환합니까?

대부분의 매뉴얼 페이지에서 가능하다고하더라도 ssh-keygen 프로그램으로 수행 할 수 없습니다. 여러 공개 키를 사용하도록 권장하지 않습니다. 유일한 문제는 RCF에서 둘 이상의 공개 키를 등록 할 수 없다는 것입니다.

이 기사에서는 PuTTY puttygen 도구를 사용하여 openssh 개인 키를 ssh.com 개인 키로 변환하는 방법에 대해 설명 합니다. 참고 : puttygen Windows 및 Linux에서 실행할 수 있습니다.

'puttygen'을 열고 2048 비트 rsa 공개 / 개인 키 쌍을 생성하십시오. 비밀번호가 생성 된 후 추가해야합니다. 공개 키를 "puttystyle.pub"로 저장하고 개인 키를 "puttystyle"로 저장하십시오. 퍼티 프로그램과 SSH.com 프로그램은 일반적인 공개 키 형식을 공유하지만 퍼티 프로그램과 OpenSSH는 다른 공개 키 형식이 있습니다. 우리는 나중에 이것으로 돌아올 것입니다. 퍼티 스타일 키를 퍼티 프로그램에로드 할 수 있어야합니다. 그러나 putty 및 SSH.com의 개인 키 형식은 동일하지 않으므로 변환 된 파일을 작성해야합니다. 변환 메뉴로 이동하여 SSH.com 키를 내 보냅니다. "sshstyle"로 저장하십시오. 이제 변환 메뉴로 돌아가 openssh 키를 내 보냅니다. "openssh"로 저장하십시오. 이 이름은 임의적이며 자신이 선택할 수 있습니다. 나중에 OpenSSH 시스템에 설치할 이름을 변경해야합니다. 아래를 참조하십시오.

위의 것을 감안할 때 puttygen이전에 생성 된 개인 / 공개 openssh 키 쌍을 사용하여을 사용하여 다음을 해결했습니다 .

# generate ssh.com private key from private openssh key
$ puttygen newkey -O private-sshcom -o newkey.puttygen-sshcom

# generate ssh.com public key from private openssh key
$ puttygen newkey -O public -o newkey.pub_puttygen-sshcom

# generate openssh public key from private openssh key (for confirmation)
$ puttygen newkey -O public-openssh -o newkey.pub_puttygen-openssh

주석이 다르므로 결과 파일을 비교할 수 없으므로 키의 처음 몇 줄을 보면 위의 명령이 성공했음을 나타내는 좋은 지표입니다.

공개 ssh.com 키 비교 :

$ tail -n +3 newkey.pub_e | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb

$ tail -n +3 newkey.pub_puttygen-sshcom | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb

공개 openssh 키 비교 :

$ cut -c 1-100 newkey.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

$ cut -c 1-100 newkey.pub_puttygen-openssh 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

3
약 어떤 개인 키를 변환?
ДМИТРИЙ МАЛИКОВ

@ ДМИТРИЙМАЛИКОВ-왜 중요한가요? 나는 그것을 시도했고 개인 또는 공개 키 중 하나에서 작동하는 것 같습니다.
slm

1
올바른 개인 키를 반환하는지 확실하지 않습니다 $> a="$(ssh-keygen -e -f ~/.ssh/id_rsa)m"; b="$(ssh-keygen -e -f ~/.ssh/id_rsa.pub)m"; md5sum <<< $a; md5sum <<< $b ce615aa3e39e274d0bd81064399cedf8 - ce615aa3e39e274d0bd81064399cedf8 -. 원본 파일의 해시가 다릅니다. 개인 또는 공개 입력 키의 공개 키를 반환하는 것으로 보입니다.
ДМИТРИЙ МАЛИКОВ

@ ДМИТРИЙМАЛИКОВ-답변에 대한 내 업데이트를 참조하십시오. ssh-keygen공개 키를 돌려주는 것이 맞습니다 . 추가 연구를 기반으로 한 방법을 연구했습니다. 허용되는 경우 LMK.
slm

1
puttygen 속성은 까다로울 수 있습니다 : puttygen <OpenSSH_priv_key> -O public -o id_rsa_ssh2_puttygen{.pub}( -Ooutput- type-ooutput- file을 나타냅니다 ). 즉, 생성 SSH2 2048 비트 RSA 개인 키 생성 된 OpenSSH를 7.0 개인 및 공개 키. Win Phone 7.5 클라이언트 (* Tommi Pirttiniemi의 SSH 클라이언트)에서 작동하지 않습니다. 그러나 @ ДМИТРИЙМАЛИКОВ와 @slm에게 감사의 말을 전합니다. @Otheus puttygen은 putty아치 와 함께 제공됩니다 .
tuk0z

1

ssh-keygen개인 키를 pem 형식으로 내 보내지 않지만 기존 openssh 개인 키를 pem 형식으로 변환하여 원본을 덮어 씁니다. 비밀번호를 편집하기 만하면됩니다.

~/.ssh/id_rsa파일을 OpenSSH 형식에서 SSH2 (pem) 형식 으로 변환하는 명령 은 다음과 같습니다.

ssh-keygen -p -f ~/.ssh/id_rsa -m pem

그런 다음 프롬프트에서 (이전) 및 새 암호 문구를 제공하십시오. 그것들은 동일하거나 둘 다 비어있을 수 있습니다. 또는 -P(이전 암호 구) 및 -N(새 암호 구문) 옵션을 사용하여 명령 줄에서 이들을 제공 할 수 있습니다. 예를 들어, 암호가 비어 있고 그런 식으로 유지하려는 경우 :

ssh-keygen -p -P '' -N ''-f ~/.ssh/id_rsa -m pem
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.