Prihlásenie na SSH s občianskym preukazom

10. 2. 2022 16:47 Martin Matuška

Naše občianske preukazy majú uložené RSA kľúče, ktoré pomocou technológie PKCS11 používame na prihlasovanie do portálov slovenskej verejnej správy a na podpisovanie digitálnych dokumentov. Čo možno každý nevie, tieto sa dajú jednoducho použiť aj na prihlásenie cez SSH.

Čo k tomu potrebujeme:

  • čítačku čipových kariet (externú alebo zabudovanú), ktorá podporuje naše občianske preukazy
  • občiansky preukaz s nahratými certifikátmi
  • Linux alebo Mac OS (je to možné ale aj na Windows)
  • openssh (je súčasťou takmer každej inštalácie)
  • aplikáciu pre eID

Aplikáciu pre eID si môžeme stiahnuť zo stránky www.slovensko.sk pre operačné systémy Windows, Mac OS a aktuálne aj pre Linuxové distribúcie Debian, Mint a Ubuntu.

Na linuxových distribúciách Debian, Mint a Ubuntu sa nainštalovaný balík volá eac-mw-klient:

$ dpkg -s eac-mw-klient
Package: eac-mw-klient
Status: install ok installed
Priority: extra
Section: x11
Installed-Size: 93576
Maintainer: Ministerstvo vnútra Slovenskej republiky
Architecture: amd64
Source: eac-mw-klient
Version: 3.7.0
Replaces: eidklient
Depends: libc6 (>= 2.11), libpcsclite1, pcscd, xterm
Conflicts: eidklient
Description: Aplikácia pre eID

Tento balík nainštaluje PKCS11 knižnicu, ktorú potrebujeme na prihlasovanie pomocou SSH. Jej štandardné umiestnenie je /usr/lib/eac_mw_klient/libpkcs11_x64.so.

$ dpkg -L eac-mw-klient | grep pkcs11
/usr/lib/eac_mw_klient/libpkcs11_x64.so

Na operačnom systéme Mac OS má tento súbor nasledovné umiestnenie:

/Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib

Na prihlásenie pomocou SSH musíme najprv extrahovať (verejné) certifikáty z občianskeho preukazu. Na toto je potrebné mať zapnutý program „Aplikácia pre eID“, ktorý používa grafické rozhranie Qt (KDE). Potrebné knižnicé sú ale pribalené k balíku eac-mw-klient, takže má tento balík iba minimálne závislosti a je použiteľný aj na novších verziách vyššie uvedených linuxových distribúcií.

Zároveň potrebujeme aj občiansky preukaz vložený do čítačky a rozpoznaný aplikáciou pre eID.Kľúče vo formáte ako sa používajú v súbore authorized_keys extrahujeme nasledovným príkazom:

Linux:

ssh-keygen -D /usr/lib/eac_mw_klient/libpkcs11_x64.so > authorized_keys

Mac OS:

ssh-keygen -D /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib > authorized_keys

Aplikácia pre eID si od nás vypýta BOK (bezpečnostný osobný kód) a po jeho úspešnom zadaní sa do súboru authorized_keys sa zapíšu tri verejné kľúče z občianskeho preukazu.

Žiaľ tieto kľúče nemajú označenie, takže je potrebné z nich identifikovať ten „pravý“, pri ktorom stačí na prihlásenie do SSH zadanie BOK. Ak dáte do súbora authorized_keys všetky tri, tak bude prihlásenie vyžadovať aj elektronický podpis pomocou KEP PIN. Postupným vložením jednotlivých kľúčov samostatne a následným pokusom o prihlásenie sa dá ale ten správny kľúč nájsť.

Súbor authorized_keys (alebo iba jednotlivé kľúče z neho) je potrebné premiestniť do konfigurácie cieľového účtu, na ktorý sa chceme prihlásiť. Táto je väčšinou v domovskom priečinku vzdialeného používateľa ~/.ssh/authorized_keys.

Na konkrétne prihlásenie pomocou občianskeho preukazu potom použijeme príkaz:

Linux:

ssh -I /usr/lib/eac_mw_klient/libpkcs11_x64.so remoteuser@remotehost

Mac OS:

ssh -I /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib remoteuser@remotehost

kde remoteuser je meno vzdialeného používateľa a remotehost je DNS názov alebo IP adresa vzdialeného servera.

Ak chceme túto formu prihlásenia použiť pre určité vzdialené servery permanentne, môžeme v lokálnej konfigurácii pre SSH klienta ~/.ssh/config urobiť pre tieto servery nastavenie:

Linux:

Host remotehost
        User remoteuser
        PKCS11Provider /usr/lib/eac_mw_klient/libpkcs11_x64.so

Mac OS:

Host remotehost
        User remoteuser
        PKCS11Provider /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib

Sdílet