tl;dr: gpg-agent
SSH 키에 대해 다른 소스를 사용할 수 있도록 영구 가져오기 기능을 비활성화하거나 이를 해결하는 방법이 있습니까 ?
상황
나는 사용한다GnuPG 2 키(YubiKey에서) gpg-agent
을 통한 SSH 인증용 enable-ssh-support
. 이것은 잘 작동합니다.
나는 ~를 가지고있다다른 키사용 가능합니다(파일 시스템 및 KeePassXC). ssh-add
또는 KeePassXC를 사용하여 추가 하면 에서 가져오고 gpg-agent
저장됩니다 ~/.gnupg/private-keys-v1.d/
. 암호화하려면 추가 비밀번호를 제공해야 합니다.
문제
이는 광고된 대로 작동하지만 키를 다른 곳에 저장하는 목적을 상실합니다.
- 나는 KeePassXC를 원합니다일시적으로 키 추가
ssh-agent
비밀번호 데이터베이스를 잠금 해제할 때 현재 상태로 유지됩니다 . 이후에는 키를 영구적으로 사용할 수 없어야 합니다. - 셸에서 키 파일을 가져오는 것과 유사합니다
ssh-add
. 더 많은 암호를 제공해야 하는 동안 해당 파일을 가져오고 유지하고 싶지 않습니다.
모든 키 소스를 사용하도록 허용하면서 가져오기를 방지하려면 어떻게 해야 합니까? 내가 갖고 있던 한 가지 아이디어는 동일한 시스템에 여러 에이전트를 설정하여 gpg-agent
로컬로 전달할 수 있다는 것이었지만 ssh-agent
이는 지나치게 복잡해 보일 수 있습니다.
비슷한 문제는 다음의 일부입니다.이 KeePassXC 문제, 그러나 해결책이 제안되지 않았습니다.
답변1
세 번째 옵션: gpg-agent를 통해 Yubikey를 사용하는 대신 PKCS#11을 통해 PIV 스마트카드 지원을 사용합니다. 이는 기본적으로 다음을 통해 OpenSSH에서 지원됩니다 PKCS11Provider
.
ssh -I opensc-pkcs11.so root@myhost
ssh-agent는 PKCS#11 키도 인식할 수 있습니다.
ssh-add -s opensc-pkcs11.so
(Yubico는 yubico-piv-tool의 일부로 자체 Yubikey 관련 libykcs11.so
모듈도 제공하지만, 후자는 이제 더 이상 사용되지 않으므로 libykcs11.so도 더 이상 사용되지 않으며 OpenSC의 일반 PIV 지원을 사용해야 한다고 가정합니다. 실제로 두 모듈은 서로 바꿔 사용할 수 있으며 문제 없이 서로의 개체를 인식합니다.)
Yubikey의 OpenPGP와 PIV 애플릿은 완전히 별개이며 둘 사이에서 키를 이동할 수 없습니다. 따라서 하드웨어에서 생성된 키 쌍인 경우 불행하게도 ykman piv
. (Yubikey를 사용하면 소프트웨어 생성 키를 가져올 수 있습니다.)
PIN(및 잊어버린 PIN 차단을 해제하기 위한 PUK)을 설정합니다. 둘 다 영숫자여야 하며 길이는 6~8자여야 합니다.
ykman piv change-pin -P 123456 ykman piv change-puk -p 12345678
자체 서명된 인증서(SSH는 신경 쓰지 않음)와 함께 키를 생성합니다.
ykman piv info ykman piv generate-key -a ECCP256 9a /tmp/9a.pub ykman piv generate-certificate 9a /tmp/9a.pub -s "Thomas" -d 3650 rm /tmp/9a.pub
최신 버전이 없는 경우 이전 도구 나 다양한 일반 PKCS#11 도구(예: OpenSC 또는 GnuTLS ) 를
ykman
사용할 수 있습니다 .yubico-piv-tool
pkcs11-tool
p11tool
yubico-piv-tool -a change-pin -P 123456 yubico-piv-tool -a change-puk -P 12345678 yubico-piv-tool -a status yubico-piv-tool -a generate -A ECCP256 -s 9a -o /tmp/9a.pub yubico-piv-tool -a verify-pin -a selfsign-certificate \ -s 9a -S "/CN=Thomas" -i /tmp/9a.pub -o /tmp/9a.crt yubico-piv-tool -a import-certificate -s 9a -i /tmp/9a.crt
Authorized_keys 형식으로 공개 키를 내보냅니다.
ssh-keygen -D opensc-pkcs11.so > Yubikey.pub
연결시
ssh -I
옵션이나 설정을 이용하세요 .PKCS11Provider
(매번 스마트카드 PIN을 입력하라는 메시지가 표시됩니다. 이를 줄이려면 필요한 경우 SSH 연결 멀티플렉싱을 설정하세요.)
이 접근 방식에는 다른 장점도 있습니다. Windows에는 이미 PIV 스마트 카드용 드라이버가 있으므로(예: PuTTY-CAC 또는 CAPI/CNG 키 저장소를 SSH 클라이언트에 연결하는 여러 다른 프로젝트를 통해) Windows에서도 사용하기가 매우 쉽습니다.