SSH 키를 yubikey에 저장하므로 디스크에 개인 키 파일이 없습니다. 인증을 위해 OpenSSH 인증서도 사용할 때 문제가 발생했습니다. ssh-agent를 사용하여 인증서를 전달하려면 어떻게든 에이전트에 추가해야 합니다.
priv라는 개인 키와 priv-cert.pub라는 인증서가 있으면 이 작업이 자동으로 수행됩니다. 그런데 파일이 없어서 인증서 파일을 에이전트에 추가하는 방법을 찾을 수 없습니다.
이 작업을 수행하는 방법을 아는 사람이 있나요?
이에 대한 지원이 없는 것 같습니다. 다음 기능 요청을 찾았습니다.https://bugzilla.mindrot.org/show_bug.cgi?id=2472
답변1
Yubikey 문서에는 ssh-agent
여기에 인증서를 추가할 수 있다고 언급되어 있습니다.https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html
답변2
인증서 및 하드웨어 토큰이 포함된 SSH
이 질문은 오래되었을 수 있지만 요즘 하드웨어 인증이 점점 일반화되고 있습니다. 개인 키가 ssh-agent
또는 유사한 대안 에서 제공되는 한 gpg-agent
다음은 다른 하드웨어 키를 사용해야 합니다.
긴 이야기 짧게
그냥 제공공개 키-i
파일의 명령 매개변수 ssh
:
ssh -o CertificateFile=yubikey-cert.pub -i yubikey.pub [email protected]
단계별로
이 가이드는 SSH 버전에서 테스트되었습니다.
OpenSSH_7.9p1 Raspbian-10+deb10u2+rpt1, OpenSSL 1.1.1n 15 Mar 2022
하드웨어 토큰에 개인 키가 생성되었다고 가정합니다. 토큰에서 개인 키를 검색하여 파일에 저장할 수 있는 방법은 전혀 없습니다. 이 키는 ssh-agent
공통 환경 변수를 에뮬레이트하고 제공하는 SSH_AUTH_SOCK
소프트웨어 드라이버를 통해서만 액세스 할 수 있습니다. 키를 사용하기 위해 드라이버는 하드웨어 토큰과 통신하며, 키 사용은 토큰의 마이크로컨트롤러에서 발생합니다.
공개 키 받기
토큰의 개인 키 중 공개 키가 필요합니다. 이것키의 해시이는 다음을 통해 확인할 수 있습니다.
ssh-add -l
산출:
4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cardno:000000000000 (RSA)
이것공개 키검색하여 파일에 저장할 수 있습니다.
ssh-add -L > yubikey.pub
산출:
cat yubikey.pub
ssh-rsa AAA.........XXX== cardno:000000000000
공개 키 서명
이제 공개 키를 사용하여 서명할 수 있습니다.인증 기관개인 키, 인증서 생성:
ssh-keygen -s ca.key -I "keyID" -n user -z 4711 yubikey.pub
그러면 인증서 파일이 생성됩니다 yubikey-cert.pub
. 물론 맞습니다키 ID그리고TV 시리즈-z
(매개변수)를 제공해야 합니다.
인증서 사용
이제 인증서를 명령에서 직접 사용할 수 있습니다 ssh
. 암시적 메커니즘에 의존하는 대신 ssh
명령줄에서 키와 인증서를 전달할 수 있습니다. 이것개인 키물론 거기 에 있어야 합니다 ssh-agent
.
ssh -o CertificateFile=yubikey-cert.pub -i yubikey.pub [email protected]
문제 해결을 위해 -v
SSH 스위치를 사용하여 어떤 키와 인증서가 사용되는지에 대한 자세한 정보를 얻을 수 있습니다.
ssh -v -o CertificateFile=yubikey-cert.pub -i yubikey.pub [email protected]
출력(간결함을 위해 잘림):
...
debug1: Will attempt key: yubikey-cert.pub RSA-CERT SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit
debug1: Will attempt key: yubikey.pub RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit agent
debug1: Will attempt key: ...
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: yubikey-cert.pub RSA-CERT SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit
debug1: Server accepts key: yubikey-cert.pub RSA-CERT SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit
debug1: Authentication succeeded (publickey).
...
SSH 인증서에 대한 전체 튜토리얼은 이 답변의 범위를 벗어납니다. 자세한 내용은 다음에서 확인할 수 있습니다.OpenhSSH 레시피.