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:
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
Som dlhoročný používateľ Linuxu na desktope a serveroch.
Zároveň patrím medzi vývojárov operačného systému FreeBSD a kompresnej knižnice libarchive.