최근에 커밋에 서명하기 위해 PGP 키를 만들었고 제대로 작동합니다. 또한 gpg는 ssh-agent보다 내 운영 체제(Kubuntu)와 더 잘 통합된다는 것을 알았습니다.
나는 게으르고 내가 액세스할 수 있는 모든 다른 서버에서 SSH 키를 교체하는 것을 피하고 싶습니다.
ssh something
기존 SSH 키를 PGP 키의 하위 키로 가져온 다음 ssh-agent 지원으로 gpg 에이전트를 실행하여 런타임에 내 하위 키를 사용하고 gpg 에이전트를 사용하여 비밀번호를 묻는 옵션이 있습니까 ?
이상적으로는 마스터 PGP 키에 암호를 한 번만 제공한 다음 ssh를 통해 커밋하거나 로그인할 때마다 올바른 암호를 사용하는 것입니다.
가능합니까? (다른 형식이라는 것을 알고 있지만 그게 내가 아는 전부입니다.)
답변1
너가 필요한 모든것:
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
ssh-add -c -t 3600 ~/.ssh/id_rsa # set the cache lifetime as 3600s
그런 다음 자유롭게 파일을 삭제하세요. mv ~/.ssh/id_rsa.* /path/to/backup
.
이제 SSH를 통해 테스트할 수 있습니다.
결국 프로필에 .profile
또는 와 같은 환경을 추가하는 것을 잊지 마세요 ~/.bashrc
.
(PS: SSH 키(gpg 형식)가 키그립에 존재하고 이름이 키그립인 것을 확인할 수 있습니다 ~/.gnupg/private-keys-v1.d/
. 이를 하위 키로 추가할 수 있습니다.
인용하다:
https://incenp.org/notes/2015/gnupg-for-ssh-authentication.html
https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html
답변2
간단한 방법을 찾았습니다. pem2openpgp
Monkeysphere 프로젝트의 유틸리티와 gpg2
기존 키를 하위 키로 가져오는 기능이 필요합니다 .
먼저 SSH 키를 OpenPGP 형식으로 변환합니다. GPG에서 요구하는 대로 새 사용자 ID를 제공해야 합니다.
$ pem2openpgp $TEMP_USERID < .ssh/id_rsa | gpg2 --import
이제 새 사용자 ID와 SSH 키가 마스터 키로 사용됩니다. (저는 으로 gpg2 -K
설정했습니다 ) 를 사용하여 확인할 수 있습니다 . 또한 새로 가져온 키의 키그립을 확인하세요.TEMP_USERID
TEST
$ gpg2 -K --with-keygrip $TEMP_USERID
sec rsa4096 2018-03-02 [C]
21C766CAC691F395D640E8207E9F9F883D1E49D8
Keygrip = AAB27E63622E87B27AC34293EDF52C3AB016CA2E
uid [ unknown] TEST
이제 gpg2 --expert --edit-key
마스터 키를 사용하고 위의 키를 하위 키로 가져옵니다.
$ gpg2 --expert --edit-key $YOURUSERID
gpg> addkey
......
(13) Existing key
Enter the keygrip: AAB27E63622E87B27AC34293EDF52C3AB016CA2E
......
gpg2
평소처럼 질문을 많이 할게요. 올바른 키 기능을 전환하는 것을 잊지 마십시오(서명: 꺼짐, 암호화: 꺼짐, 확인: 켜짐).
그런 다음 가져온 SSH 키를 마스터 키의 하위 키로 사용해야 합니다. 확인하다:
$ gpg2 -K $YOURUSERID --with-keygrip
sec rsa4096 2016-02-02 [SC]
......
uid [ 绝对 ] CUI Hao (cvhc) <[email protected]>
......
ssb rsa4096 2018-02-21 [A]
Keygrip = AAB27E63622E87B27AC34293EDF52C3AB016CA2E
이를 사용하여 gpg2 --export-ssh-key
가져온 하위 키가 실제로 원래 SSH 키와 동일한지 확인할 수 있습니다.
키 가져오기에 사용된 임시 사용자 ID는 여전히 키링에 있습니다. 수동으로 삭제해야 합니다. GnuPG는 해당 개인 키를 삭제하지 않고 공개 키/사용자 ID를 삭제하는 것을 방지합니다. 그러나 임시 사용자와 가져온 하위 항목은 동일한 개인 키를 공유하므로 gpg2 --delete-secret-keys $TEMP_USERID
가져온 하위 항목도 삭제됩니다.
내 해결책은 개인 키를 백업 ~/.gnupg/private-keys-v1.d
하고 가져온 하위 키를 삭제한 후 다시 옮기는 것이었습니다 gpg2
.
개인 키에 영향을 주지 않고 공개 키를 삭제할 수 있는 옵션을 제공하도록 GnuPG에 요청하는 기능 요청을 제출했습니다.https://dev.gnupg.org/T3808