PuTTYgen (Windows)을 사용하여 생성 된 SSH 키 쌍을 ssh-agent 및 Keychain (Linux)에서 사용하는 키 쌍으로 변환하는 방법


464

PuTTYgen을 사용하여 키 페어를 생성하고 Pageant를 사용하여 로그인하여 시스템 부팅시 한 번만 암호 문구를 입력해야합니다.

Linux에서 어떻게 이것을 달성합니까? 나는 들었지만 keychain다른 키 페어 형식을 사용한다고 들었습니다. Windows 키를 변경하고 싶지 않으며 Windows와 Linux에서 동일한 방식으로 완벽하게 연결할 수 있다면 좋을 것입니다.


리눅스에서도 키를 사용하는 데 아무런 문제가 없어야합니다 ... 키를 복사하고 인증 된 키에 펍을 추가하십시오 ...하지만 귀하의 질문을 완전히 이해하지는 못합니다.
랜달 헌트

17
그렇습니다. PuttyGen과 ssh-agent에서 사용하는 키 형식이 다르므로 명시 적으로 변환해야합니다. 아래 Kaleb의 자세한 답변을 참조하십시오.
TCSGrad

답변:


714

puttygen개인 키를 OpenSSH 호환 형식으로 내보내기를 지원합니다. 그런 다음 OpenSSH 도구를 사용하여 공개 키를 다시 작성할 수 있습니다.

  1. 퍼티 젠 열기
  2. 로드를 클릭하십시오
  3. 개인 키로드
  4. Conversions->Export OpenSSH개인 키로 이동하여 내보내기
  5. 개인 키를 ~/.ssh/id_dsa(또는 id_rsa)에 복사하십시오 .
  6. 다음을 사용하여 공개 키의 RFC 4716 버전을 작성하십시오. ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
    
  7. 공개 키의 RFC 4716 버전을 OpenSSH 형식으로 변환하십시오.

    ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub
    

참조 자세한 내용은.


12
얻을 사람들을 위해 It is required that your private key files are NOT accessible by others내가 실행했던 같은 오류 cd ~/.sshchmod 700 id_rsa
전문가

77
chmod 600 id_rsa를 의미 합니다. 파일을 실행할 필요는 없습니다. :)
sig11

2
이 대답은 암호가없는 키를 사용하여 (특히 git 액세스) Windows 명령 줄에서 ssh를 얻는 열쇠였습니다. 내가 더 일찍 본다면 나에게 고통의 시간 을 절약 했을 것입니다! 감사!
cori

2
CLI에서 puttygen을 실행할 수 있습니까?
CMCDragonkai

20
나는 이것이 새로운 것이라고 가정하지만, puttygen에서 개인 키를 열면 UI에 OpenSSH 호환 가능하고 복사 가능한 공개 키 문자열이 자동으로 표시됩니다.
UpTheCreek

161

PuTTY 스타일 형식의 사용자 공개 키만 있으면 다음과 같이 표준 openssh 형식으로 변환 할 수 있습니다.

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

참고 문헌

기사의 사본

나는 이것을 잊어 버리고 여기에 쓸 것입니다. 괴짜가 아닌 사람들은 계속 걷습니다.

Windows에서 키를 만드는 가장 일반적인 방법은 Putty / Puttygen을 사용하는 것입니다. Puttygen은 Linux 개인 키를 Putty 형식으로 변환하는 깔끔한 유틸리티를 제공합니다. 그러나 해결되지 않은 것은 puttygen을 사용하여 공개 키를 저장하면 Linux 서버에서 작동하지 않는다는 것입니다. Windows는 일부 영역에 데이터를 넣고 줄 바꿈을 추가합니다.

해결 방법 : puttygen에서 키 페어를 생성 할 때 공개 키 화면에 도달하면 공개 키를 복사하여 확장자가 .pub 인 텍스트 파일에 붙여 넣습니다. 이런 식으로 sysadmin 시간의 좌절 읽기 게시물을 절약 할 수 있습니다.

그러나 sysadmins는 키를 찾지 못하고 암호를 시도하는 것을 제외하고는 인증 로그에 오류 메시지를 표시하지 않는 원 키 파일을 항상 얻습니다. 다른 사람의 키가 제대로 작동하더라도이 키를 사용자에게 15 번 다시 보냈습니다.

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

기존 puttygen 공개 키를 OpenSSH 형식으로 변환해야합니다.


2
또한 Comment:줄 에서 사용자 의견을 복사하여 공백으로 구분하여 새 키와 동일한 줄에 붙여 넣을 수 있습니다. ssh-keygen이 기본적 으로이 작업을 수행하지 않는 이유를 모르겠습니다.
Tobia

2
이것은 나에게 오류를 준다 :decode blob failed: invalid format
Chris Stryczynski

원본 기사를 읽으면 키 세부 사항은이 방법은 puttygen이 UI를 통과 할 때 puttygen에서 키를 복사하는 경우에만 작동한다는 것입니다. puttygen이 생성 한 파일에서 이미 생성 된 키를 변환하지 않습니다.
slm

동일한 도구를 사용하여 다른 방법으로 변환 할 수 있습니까?
Olle Härstedt

네, 당신이보고있는 것처럼 보입니다 : ssh-keygen -e -f openssh_key.pub> putty.pub
Erik

148

최신 버전의 PuTTYgen ( 최소 0.64)은 .ssh/authorized_keys다음 이미지와 같이 Linux 시스템에 파일 에 붙여 넣을 OpenSSH 공개 키를 표시 할 수 있습니다 .

여기에 이미지 설명을 입력하십시오


7
이 답변에서는 OpenSSH 형식을 사용하는 원격 장치에서 키 인증을 설정하는 방법에 대해 설명합니다. 그러나 Linux 클라이언트 에서 Putty 생성 키를 사용하려면 이 답변이 충분하지 않습니다. 나는 받아 들인 대답을 따라 훌륭하게 일했습니다.
wberry

52

또는 PuTTY 형식의 키 파일에서 개인 및 공개 키를 가져 오려면 puttygen* nix 시스템에서 사용할 수 있습니다 . 대부분의 apt 기반 시스템 puttygenputty-tools패키지의 일부입니다 .

PuTTY 형식의 키 파일에서 개인 키 출력 :

$ puttygen keyfile.pem -O private-openssh -o avdev.pvk

공개 키의 경우 :

$ puttygen keyfile.pem -L


어떤 이유로 Windows 상자 에서이 작업을 수행해야하고 (모든 키를 * nix로 안전하게 전송할 수는 없음) GUI를 사용하여 너무 많은 키가 번거 롭다면 Cygwin에서 Unix 소스를 컴파일하십시오. 해당 puttygen.exe는 위에서 설명한 것처럼 CLI "배치 모드"를 제공합니다.
Toddius Zho

2
OSX :brew install putty
Juha Palomäki

1
: 즉 반전해야 puttygen inppk -O private-openssh -o outpemputtygen inppk -L(또는 ssh-keygen -y -f outpem)
dave_thompson_085

27
sudo apt-get install putty

퍼티 겐 도구가 자동으로 설치됩니다.

SSH 명령과 함께 사용할 PPK 파일을 변환하려면 터미널에서 다음을 실행하십시오.

puttygen mykey.ppk -O private-openssh -o my-openssh-key

그런 다음 SSH를 통해 다음을 통해 연결할 수 있습니다.

ssh -v user@example.com -i my-openssh-key

http://www.graphicmist.in/use-your-putty-ppk-file-to-ssh-remote-server-in-ubuntu/#comment-28603


이것은
@John

논쟁은 그들이 나타내는 것을 설명합니다. +1
danronmoon

큰! 작동합니다. 또한, Macos에 퍼티를 설치하려면 : brew install putty
Dylan B

14

최근 Linux 용 Putty에서 Linux 용 Remmina로 이동 하면서이 문제가 발생했습니다. 그래서 .putty8 년 동안 사용하면서 Putty 용 PPK 파일이 많이 있습니다. 이를 for위해 bash 쉘에 간단한 명령을 사용하여 모든 파일을 수행했습니다.

cd ~/.putty
for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done;

퍼티가 가진 모든 파일에 대해 작업을 매우 빠르게 완료했습니다. 비밀번호가있는 키를 찾으면 중지하고 해당 키의 비밀번호를 먼저 요청한 후 계속합니다.


2
나와 같은 게으른 ppl의 경우, 우분투에서 puttygen을 얻는 복사 붙여 넣기입니다 : sudo apt-get install putty-tools
Lennart Rolland

"간단한"-복잡한 것을보고 싶지 않다!
Alex Jansen 1


6

TCSgrad가 몇 년 전에 묻고 자하는 것은 Linux를 Windows 컴퓨터처럼 작동하게 만드는 방법이었습니다. 즉, 암호문을 한 번만 입력하면되도록 개인 키의 암호 해독 된 사본을 보유하는 에이전트 (대회)가 있습니다. 그런 다음 ssh 클라이언트 인 putty는 암호 프롬프트없이 공개 키가 "권한 부여됨"으로 표시되는 시스템에 로그인 할 수 있습니다.

이에 대한 아날로그 는 ssh 클라이언트 역할을하는 Linux 에 암호 해독 된 개인 키를 보유하는 에이전트가있어 TCSgrad 유형이 "ssh host"인 경우 ssh 명령이 개인 키를 가져 와서 비밀번호를 입력하지 않아도됩니다. 물론 호스트는 ~ / .ssh / authorized_keys에 공개 키를 가지고 있어야합니다.

이 시나리오에 대한 Linux 아날로그는 ssh-agent (pageant analog) 및 ssh-add (pageant에 개인 키를 추가하는 아날로그)를 사용하여 수행됩니다.

나를 위해 일한 방법은 다음과 같습니다. $ ssh-agent $ SHELL $ SHELL은 에이전트를 실행하고 계속 실행시키는 데 필요한 마술이었습니다. 나는 'net'어딘가에서 벽에 머리를 때리는 몇 시간을 끝내는 것을 발견했습니다.

이제 키가로드되지 않은 에이전트 인 pageant의 아날로그가 실행됩니다.

$ ssh-add 자체를 입력하면 기본적으로 ~ / .ssh의 기본 아이디 파일에 나열된 개인 키가 추가됩니다 (기본적으로).

더 자세한 내용이있는 웹 기사는 여기 에서 찾을 수 있습니다.


0

PPK → PuttyGen & Docker가 포함 된 OpenSSH RSA.

개인 키 :

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -O private-openssh -o my-openssh-key

공개 키 :

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -L -o my-openssh-key.pub

참조 https://hub.docker.com/r/zinuzoid/puttygen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.