인증서 및 하드웨어 토큰이 포함된 SSH

인증서 및 하드웨어 토큰이 포함된 SSH

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]

문제 해결을 위해 -vSSH 스위치를 사용하여 어떤 키와 인증서가 사용되는지에 대한 자세한 정보를 얻을 수 있습니다.

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 레시피.

관련 정보