4.2. 스마트 카드에 저장된 SSH 키로 인증
스마트 카드에 ECDSA 및 RSA 키를 생성 및 저장하고 OpenSSH 클라이언트의 스마트 카드로 인증할 수 있습니다. 스마트 카드 인증은 기본 암호 인증을 대체합니다.
사전 요구 사항
-
클라이언트 측에서
opensc
패키지가 설치되고pcscd
서비스가 실행 중입니다.
절차
PKCS #11 URI를 포함하여 OpenSC PKCS #11 모듈에서 제공하는 모든 키를 나열하고 출력을
keys.pub
파일에 저장합니다.$ ssh-keygen -D pkcs11: > keys.pub
공개 키를 원격 서버로 전송합니다. 이전 단계에서 만든
keys.pub
파일과 함께ssh-copy-id
명령을 사용합니다.$ ssh-copy-id -f -i keys.pub <username@ssh-server-example.com>
ECDSA 키를 사용하여 < ssh-server-example.com >에 연결합니다. 키를 고유하게 참조하는 URI의 하위 집합만 사용할 수 있습니다. 예를 들면 다음과 같습니다.
$ ssh -i "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" <ssh-server-example.com> Enter PIN for 'SSH key': [ssh-server-example.com] $
OpenSSH는
p11-kit-proxy
래퍼를 사용하고 OpenSC PKCS #11 모듈이p11-kit
툴에 등록되므로 이전 명령을 단순화할 수 있습니다.$ ssh -i "pkcs11:id=%01" <ssh-server-example.com> Enter PIN for 'SSH key': [ssh-server-example.com] $
PKCS #11 URI의
id=
부분을 건너뛰면 OpenSSH는 proxy 모듈에서 사용할 수 있는 모든 키를 로드합니다. 이렇게 하면 필요한 입력 횟수가 줄어듭니다.$ ssh -i pkcs11: <ssh-server-example.com> Enter PIN for 'SSH key': [ssh-server-example.com] $
선택 사항:
~/.ssh/config
파일에서 동일한 URI 문자열을 사용하여 구성을 영구적으로 만들 수 있습니다.$ cat ~/.ssh/config IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" $ ssh <ssh-server-example.com> Enter PIN for 'SSH key': [ssh-server-example.com] $
이제
ssh
클라이언트 유틸리티에서 이 URI와 스마트 카드의 키를 자동으로 사용합니다.
추가 리소스
-
p11-kit(8)
,opensc.conf(5)
,pcscd(8)
,ssh(1)
, 및ssh-keygen(1)
도움말 페이지