SSH를 통해 GnuPG에서 내보낸 OpenPGP 키를 사용할 수 없습니다.

SSH를 통해 GnuPG에서 내보낸 OpenPGP 키를 사용할 수 없습니다.

1년여 전에 나는 GnuPG를 사용하여 PGP 키를 생성했습니다. 그 이후로 실제로 주변에 가본 적이 없기 때문에 GPG의 내용에 대해 매우 모호합니다(원칙적으로 비대칭 키 암호화를 이해하지만). 저는 어제 실수로 삭제하기 전까지 이 키를 사용하여 SSH 로그인을 인증했습니다. 그래서 오늘 다시 생성을 시작했습니다.

실행했는데 gpg --export-secret-key -a "Ryan Lue" > ~/.ssh/id_rsa비밀번호를 묻는 메시지가 나타납니다. 비밀번호를 입력했더니 id_rsa파일이 나왔어요. 이제 SSH를 통해 서버에 연결하려고 하면 다음 경고가 표시됩니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

그래서 나는 행동했습니다 chmod 600 ~/.ssh/id_rsa. 그런 다음 다시 시도하면 비밀번호를 묻는 메시지가 표시됩니다(실제로 Mac을 사용하고 있기 때문에 키체인에서 비밀번호를 묻는 메시지가 표시됩니다). 내보낼 때와 동일한 비밀번호를 입력했는데 명령줄에 다음 오류가 표시되면서 매번 실패합니다.

Saving password to keychain failed

또한 :을 사용하여 키를 추가하려고 시도했는데 ssh-agent실제로 명령줄에서 비밀번호를 묻는 메시지가 표시됩니다.

Enter passphrase for /Users/rlue/.ssh/id_rsa:

어느 쪽이든 비밀번호를 거부합니다. 이 프롬프트에서 입력한 비밀번호가 내보낼 때 입력한 비밀번호와 동일하다고 100% 확신합니다. 키를 12번 정도 성공적으로 내보냈지만 사용 중에 인증에 40번 정도 실패했습니다.

내가 무엇을 놓치고 있나요?

답변1

OpenPGP(GnuPG로 구현)와 SSH는 동일한 암호화 원칙을 사용하지만 공통 키 형식을 공유하지 않습니다.

그러나 GnuPG는 ssh-agent프로토콜을 구현하므로 GnuPG를 통해 OpenPGP 키를 사용하여 SSH를 통해 다른 시스템에 계속 연결할 수 있습니다.

  1. ssh-agent추가하여 enable-ssh-support프로토콜을 활성화합니다 .~/.gnupg/gpg-agent.conf
  2. export SSH_AUTH_SOCK=$HOME/.gnupg/S.gpg-agent.ssh;이 내용을 귀하의~/.profile
  3. ssh-agent시작된 경우 종료하고 다시 로드 gpg-agent ( gpg-connect-agent reloadagent /bye)
  4. 공개 키를 내보내고 대상 서버에 추가합니다( ssh-add -LSSH 공개 키 줄에는 이제 익숙한 OpenPGP 키가 포함되어야 합니다).
  5. ssh일반 SSH 키를 사용하는 것처럼 대상 서버에

이는 YubiKey를 통해 SSH 키를 보호하는 데 사용하는 OpenPGP 스마트 카드나 USB 동글에서도 작동합니다.

답변2

1) 옵션이 표시되지 않습니다.gpg부르다 --export-secret-key.

2) 키의 형식이 동일하지 않을 수 있습니다 ssh. OpenSSH가 이해할 수 있는 형식으로 변환해야 할 가능성이 높습니다. 키 형식의 정보로 질문을 업데이트하세요.

관련 정보