![OpenSSH 개인 키를 SSH2 개인 키로 변환](https://linux55.com/image/45229/OpenSSH%20%EA%B0%9C%EC%9D%B8%20%ED%82%A4%EB%A5%BC%20SSH2%20%EA%B0%9C%EC%9D%B8%20%ED%82%A4%EB%A1%9C%20%EB%B3%80%ED%99%98.png)
기존 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
공개 키는 개인 또는 공개 입력 키에 대해서만 생성되는 것 같습니다 .
내가 뭔가 잘못하고 있는 걸까요, 아니면 이것이 정상적인 행동인가요?
답변1
이 튜토리얼의 제목은 다음과 같습니다.SSH: OpenSSH를 SSH2로 또는 그 반대로 변환당신이 찾고있는 것을 제공하는 것 같습니다.
OpenSSH 키를 SSH2 키로 변환
ssh-keygen
OpenSSH 공개 키에서 OpenSSH 버전을 실행하여 원격 시스템의 SSH2에 필요한 형식으로 변환합니다. 이 작업은 OpenSSH를 실행하는 시스템에서 수행되어야 합니다.
$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub
SSH2 키를 OpenSSH 키로 변환
ssh-keygen
ssh2 공개 키에서 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 ----
구글링을 하다가 다음과 같은 제목의 기사에서 대략적인 내용을 찾았습니다.OpenSSH 개인 키 파일을 SSH로 변환하는 방법. 사이트가 위아래로 보이는데 안을 들여다보세요이 페이지에 대한 Google 캐시다음 소개를 찾았습니다.
OpenSSH 개인 키 파일을 SSH.com 개인 키 파일로 변환하는 방법은 무엇입니까?
ssh-keygen 프로그램은 이를 수행할 수 없지만 대부분의 매뉴얼 페이지에서는 이를 수행할 수 있다고 말합니다. 그들은 이를 권장하지 않으므로 여러 공개 키를 사용하게 됩니다. 유일한 문제는 RCF가 여러 공개 키를 등록하는 것을 허용하지 않는다는 것입니다.
이 기사에서는 다음 명령을 사용하여 openssh 개인 키를 ssh.com 개인 키로 변환하는 방법을 설명합니다.퍼티의 puttygen
도구.노트: puttygen
Windows 및 Linux에서 실행할 수 있습니다.
"puttygen"을 열고 2048비트 rsa 공개/개인 키 쌍을 생성합니다. 비밀번호를 생성한 후 반드시 추가하세요. 공개 키를 "puttystyle.pub"으로 저장하고 개인 키를 "puttystyle"로 저장합니다. putty 프로그램과 SSH.com 프로그램은 공통 공개 키 형식을 공유하지만, putty 프로그램과 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
답변2
ssh-keygen
pem 형식의 개인 키는 내보내지지 않지만 기존 openssh 개인 키는 pem 형식으로 변환되어 원래 개인 키를 덮어씁니다. 비밀번호를 수정하기만 하면 됩니다.
파일을 OpenSSH 형식에서 SSH2(pem) 형식으로 변환하는 명령은 다음 ~/.ssh/id_rsa
과 같습니다.
ssh-keygen -p -f ~/.ssh/id_rsa -m pem
그런 다음 메시지가 나타나면 (이전) 비밀번호와 새 비밀번호를 입력하세요. 동일하거나 비어 있을 수도 있습니다. 또는 -P
(이전 비밀번호) 및 (새 비밀번호) 옵션을 사용하여 -N
명령줄에서 이를 제공 할 수 있습니다. 예를 들어, 비밀번호가 비어 있고 이를 유지하려는 경우:
ssh-keygen -p -P '' -N ''-f ~/.ssh/id_rsa -m pem