Prihlásenie na SSH s občianskym preukazom

10.02.2022 | 12:27 | Martin Matuška | 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 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á eid-klient:
$ dpkg -s eid-klient
Package: eid-klient
Status: install ok installed
Priority: extra
Section: x11
Installed-Size: 128400
Maintainer: Ministerstvo vnútra Slovenskej republiky
Architecture: all
Source: eid-klient
Version: 4.1
Replaces: eac-mw-klient
Depends: libpcsclite1, pcscd, xterm
Conflicts: eac-mw-klient
Description: Aplikácia eID Klient
Tento balík nainštaluje PKCS11 knižnicu, ktorú potrebujeme na prihlasovanie pomocou SSH. Jej štandardné umiestnenie je /usr/lib/eID_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 eid-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/eID_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 ssh-keygen -D /usr/lib/eID_klient/libpkcs11_x64.so > authorized_keys 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/eID_klient/libpkcs11_x64.so
Mac OS:
Host remotehost
        User remoteuser
        PKCS11Provider /Applications/Aplikacia_pre_eID.app/Contents/pkcs11/libPkcs11.dylib
AKTUALIZÁCIE:
    • RE: Prihlásenie na SSH s občianskym preukazom 10.02.2022 | 12:47
      Avatar Miroslav Bendík Gentoo  Administrátor

      Cool, táto možnosť ma ani nenapadla ;)

    • RE: Prihlásenie na SSH s občianskym preukazom 10.02.2022 | 14:23
      Avatar Richard Antix  Používateľ

      Paráda.

      Tiež to musím vyskúšať.

      Super príspevok.

    • RE: Prihlásenie na SSH s občianskym preukazom 04.03.2022 | 15:11
      Avatar lime Debian 3, Red Hat 6, Fedora Core 3  Používateľ

      Super clanok, este by si mohol doplnit, druh citacky podporovany GNU Linuxom.

      Prejdite z modrej obrazovky k linuxu :))
    • RE: Prihlásenie na SSH s občianskym preukazom 19.11.2022 | 20:03
      Avatar Mato_Z   Používateľ

      Zdravím, funguje vám v súčasnosti ešte tento postup? Skúšal som na Ubuntu 22.04, eID 4.1 a bohužiaľ nefunguje: dlopen libpkcs11_x64.so failed: libpkcs11_x64.so: cannot open shared object file: No such file or directory cannot read public key from pkcs11 Vďaka.

      • RE: Prihlásenie na SSH s občianskym preukazom 28.12.2022 | 23:41
        Avatar Martin Matuška Ubuntu MATE  Používateľ

        Zdravím, aktualizoval som článok pre eid-klient 4.4