1.4. Usando chaves SSH armazenadas em um cartão inteligente
O Red Hat Enterprise Linux 8 permite que você use chaves RSA e ECDSA armazenadas em um cartão inteligente em clientes OpenSSH. Use este procedimento para habilitar a autenticação usando um Cartão Smart Card ao invés de usar uma senha.
Pré-requisitos
-
No lado do cliente, o pacote
openscestá instalado e o serviçopcscdestá funcionando.
Procedimento
Liste todas as chaves fornecidas pelo módulo OpenSC PKCS #11 incluindo seus PKCS #11 URIs e salve a saída para o arquivo keys.pub:
ssh-keygen -D pkcs11: > keys.pub ssh-keygen -D pkcs11:
$ ssh-keygen -D pkcs11: > keys.pub $ ssh-keygen -D pkcs11: ssh-rsa AAAAB3NzaC1yc2E...KKZMzcQZzx pkcs11:id=%02;object=SIGN%20pubkey;token=SSH%20key;manufacturer=piv_II?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so ecdsa-sha2-nistp256 AAA...J0hkYnnsM= pkcs11:id=%01;object=PIV%20AUTH%20pubkey;token=SSH%20key;manufacturer=piv_II?module-path=/usr/lib64/pkcs11/opensc-pkcs11.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para permitir a autenticação usando um cartão inteligente em um servidor remoto (example.com), transfira a chave pública para o servidor remoto. Use o comando
ssh-copy-idcom keys.pub criado na etapa anterior:ssh-copy-id -f -i keys.pub username@example.com
$ ssh-copy-id -f -i keys.pub username@example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para conectar-se a example.com usando a chave ECDSA da saída do comando
ssh-keygen -Dno passo 1, você pode usar apenas um subconjunto do URI, que faz referência única à sua chave, por exemplo:ssh -i "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" example.com
$ ssh -i "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" example.com Enter PIN for 'SSH key': [example.com] $Copy to Clipboard Copied! Toggle word wrap Toggle overflow Você pode usar a mesma cadeia URI no arquivo
~/.ssh/configpara tornar a configuração permanente:cat ~/.ssh/config IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" $ ssh example.com Enter PIN for 'SSH key': [example.com] $
$ cat ~/.ssh/config IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" $ ssh example.com Enter PIN for 'SSH key': [example.com] $Copy to Clipboard Copied! Toggle word wrap Toggle overflow Como o OpenSSH usa a embalagem
p11-kit-proxye o módulo OpenSC PKCS #11 está registrado no Kit PKCS #11, você pode simplificar os comandos anteriores:ssh -i "pkcs11:id=%01" example.com
$ ssh -i "pkcs11:id=%01" example.com Enter PIN for 'SSH key': [example.com] $Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Se você pular a parte id= de um PKCS #11 URI, o OpenSSH carrega todas as chaves que estão disponíveis no módulo proxy. Isto pode reduzir a quantidade de digitação necessária:
ssh -i pkcs11: example.com
$ ssh -i pkcs11: example.com
Enter PIN for 'SSH key':
[example.com] $
Recursos adicionais
- Fedora 28: Melhor suporte a cartões inteligentes no OpenSSH
-
p11-kit(8)página do homem -
ssh(1)página do homem -
ssh-keygen(1)página do homem -
opensc.conf(5)página do homem -
pcscd(8)página do homem