GPG와 SSH 키는 서로 호환됩니까?


70

RSA키 를 생성하고 로그인에 GPG사용 하고 싶습니다 SSH. 이것도 가능합니까? 그렇다면 어떻게?

편집 : @ wwerner의 답변을 참조하십시오. 나는 시도하지 않았지만 현재 솔루션 인 것 같습니다 (2018 기준)

답변:


26

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 나를 좋아하는 사람들에게는이 문제가 있습니다.

gpg :를 사용하여 ssh 키를 직접 추출하는 것이 가능합니다 (gpg 2.1 이후) gpg --export-ssh-key <key id>!.

!마크는 선택 사항이며 기본 키를 내보낼 수있게하고 키가 인증 가능한지 ([CA]) 확인하지 않습니다.

세부:


이 답변은 받아 들여 져야합니다. :)
Inkeliz

30

이 주제에 대해 조사 중이며 힌트를 줄 수는 있지만 아직 작동시킬 방법을 찾지 못했습니다.

원숭이 권

Monkeysphere 는 매우 흥미로운 프로젝트로 보이지만 MacPorts로 작은 여유 디스크 공간을 막지 않고 Mac OS X에서 컴파일 할 수 없었습니다.

gpgkey2ssh 사용

시도해 볼 것을 제안하는 첫 번째 방법은 키 ID (예 : BFB2E5E3)에서 호환 인증 된 키 항목을 생성하는 것입니다.

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

테스트 목적으로 ssh 서버를 실행 한 이후로 로컬 호스트에 추가했지만 물론 대상 호스트에 추가해야합니다 ~/.ssh/authorized_keys. 다음으로 인증 중에이 키의 개인 부분을 사용하도록 SSH에 지시해야하지만 ASCII 키 버전의 키 쌍을 내보내는 것은 작동하지 않습니다.

gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost

gpg-agent 사용

gpg-agent--enable-ssh-support그것은 잘 알려진 드롭 인 대체로 사용할 수 있는 옵션 이 있습니다 ssh-agent. 이 방법으로 ssh-add시작한 후 GPG 키 를 통해 추가하려는 일부 사람들에 대해 읽었습니다 gpg-agent.

gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc

그러나 이것이 효과가 있다고 생각하지 않습니다. GPG 에이전트 맨은 말합니다 :

에이전트를 통해 사용될 SSH 키는 ssh-add 유틸리티를 통해 gpg-agent에 처음 추가해야합니다. 키가 추가되면 ssh-add는 제공된 키 파일의 비밀번호를 요청하고 보호되지 않은 키 자료를 에이전트에 보냅니다. 이로 인해 gpg-agent는 새로 수신 된 키를 암호화하고 gpg-agent 특정 디렉토리에 저장하는 데 사용되는 암호를 요구합니다.

따라서 gpg-agentGPG 암호화로 SSH 키를 보호하기위한 추가 수단으로 사용해야 하는 것 같습니다 .

GPG 키를 OpenSSH로 변환

블로그의 Jérôme Pouiller 는 Gpgsm 유틸리티가 PCSC12에서 키와 인증서를 내보낼 수 있다고 기록합니다. 그런 다음 OpenSSH에서 사용할 수 있습니다.

gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

그러나 gpgsmgpg 키 페어를 수락 하는 방법을 찾지 못했습니다 .

시도해 볼 수있는 다른 것들

SSH에는 -IPKCS # 11 공유 라이브러리 ssh가 사용자의 개인 RSA 키를 제공하는 PKCS # 11 토큰과 통신하는 데 사용해야 하는 옵션 이 있습니다. ssh-keygenRFC4716 / SSH2 공개 또는 개인 키, PEM PKCS8 공개 키 및 PEM 공개 키를 사용하여 -i-m옵션을 사용하여 OpenSSH 호환 개인 (또는 공개) 키를 생성 할 수 있습니다.

여전히 나는 그것을 모두 모을 방법을 찾을 수 없습니다.


5
참고 gpgkey2ssh로 대체되었습니다 --export-ssh-key버전 2.1.11 (2016년 1월 26일)를 사용합니다. 이것을 깨닫는 데 시간이 걸렸습니다. 사용법은 gpg --export-ssh-key BFB2E5E3입니다.
MayeulC


Linode 에 대한 좋은 소식이 있지만 gpg-agent를 사용하여 SSH로 인증했습니다. gpg 비밀 키를 SSH 개인 키로 변환하지 않습니다.
Xorax

14

아니요, 서로 호환되지 않습니다. 예, 인증을 위해 GPG 키를 사용할 수 있습니다. Monkeysphere 패키지에는 GPG 인증서에서 원시 RSA 키 쌍을 추출하는 도구가 있습니다.

  1. GPG 인증서에는 "인증"기능 플래그가있는 하위 키가 필요합니다. 이러한 하위 키를 만들려면 한 번 실행하십시오.

    monkeysphere g
    
  2. 이제 인증 하위 키를 ssh-agent에 추가하십시오 .

    monkeysphere s
    

다소 관련이 있습니다 : 이 gnupg-users thread .


9

이 질문에 대한 답변의 정보와 gnupg-users 메일 링리스트의 도움으로 SSH 인증에 GPG 키를 사용하는 방법을 알 수있었습니다. Claudio Floreani가 그의 답변에서 이미 언급 했듯이이 작업을 수행 할 수있는 몇 가지 방법이 있습니다.

가능한 해결책에 대한 블로그 게시물을 작성했습니다 : http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

요약 : 현재 베타 버전 인 GnuPG 2.1을 사용합니다. 이 버전을 사용하는 경우 --enable-ssh-support 옵션으로 gpg-agent를 시작하고 GPG 키 (또는 하위 키)의 키 그립을 ~ / .gnupg / sshcontrol에 추가 할 수 있습니다.

현재 안정적인 GnuPG 버전 (2.0.x)을 사용하는 경우 monkeysphere를 사용하여 gpg-agent에 키를 추가 할 수 있습니다 (--enable-ssh-support 옵션으로 gpg-agent를 시작한 후).

또한 원숭이 권의 도움으로 그놈 키링 (또는 일반 ssh 에이전트)을 사용할 수도 있습니다. 이 경우 유일한 문제는 다시 로그온 할 때 (Gnome 또는 XFCE에) 키를 다시 추가해야한다는 것입니다. 이를 해결하기 위해 수동으로 키를 내보내고 변환 할 수 있습니다.

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