Cloudflare tutvustas tööriista opkssh (OpenPubkey SSH), mis võimaldab integreerida OpenSSH-sse kesksed autentimisvahendid OpenID Connecti pakkujatega. Opkssh kasutamine vabastab teid SSH võtmete haldamise ja seadistamise käsitööst ning võimaldab ühenduda serveriga mistahes hostidest, ilma et oleks vaja igas kliendi arvutis luua sulgevaid võtmeid või käsitsi kopeerida avatud võtmeid serverisse. Ühendumiseks piisab, kui seote oma konto OpenID pakkujas serveris. Tööriista kood on kirjutatud Go keeles ning levitatakse Apache 2.0 litsentsi alusel.
Opkssh on ühilduv OpenID pakkujatega Google, Microsoft/Azure ja Gitlab, võimaldades sisse logimist olemasolevate gmail.com, microsoft.com ja gitlab.com teenuste kontode kaudu. Kasutades opkssh'd, genereeritakse ajutised võtmed, mis kehtivad vaid mõne tunni, ning neid luuakse OpenID pakkuja kinnitamisel. Sarnaste võtmete lekkimine pärast kehtivuse lõppemist ei kujuta endast turvaohtu. Vaikimisi on võtme kehtivusaeg 24 tundi, pärast mida tuleb end OpenID kaudu uuesti tuvastada.
Integratsioon OpenSSH-ga põhineb SSH protokolli laienduste loomise võimalusel, mis lubavad siduda sertifikaatide SSH-ga juhuslikke andmeid. Pärast OpenID kaudu autentimise läbimist loob klient avaliku võtme, mis sisaldab PK-tokenit, mis kinnitab võtme kuuluvust deklareeritud kasutajale. Token integreeritakse SSH protokolli läbi SSH sertifikaadi lisainfo välja. PK-tokenite loomine ja nende kontroll serveri poolel toimub OpenPubKey krüptograafilise protokolli abil.
OpenPubKey võimaldab genereerida avalikku võtme ja siduda see OpenID-kliendi poolt antud tokeniga. Digitaalallkirja kaudu kinnitab pakkuja, et see võtme on loodud nimetatud autentitud kasutaja poolt. Näiteks võib Google'i OpenID-pakkuja kinnitada, et kasutaja on autentitud kui test@gmail.com. Põhja-serveris kontrollitakse, kas kinnitatud token on OpenID-pakkuja poolt allkirjastatud ja kas digitaalallkiri vastab nimetatud avalikule võtmele, st server saab veenduda, et just kasutaja test@gmail.com on loonud avaliku võtme ühenduva SSH-klient jaoks.

Integratsioon OpenSSH-ga on korraldatud, määrates programmi opkssh konfiguratsioonifailis «sshd_config» direktiivi «AuthorizedKeysCommand» kaudu (näiteks: «AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t»). Konto sidumise seadistamine OpenID-ga toimub SSH-serveri poolel. SSH-klientide poolel ei ole seadeid vaja muuta, kuid enne sisenemist tuleb käivitada käsk «opkssh login» ning avanenud brauseriaknas valida OpenID-pakkuja ja autentida end läbi selle.
Opkssh tööriist genereerib SSH võtmed ja saab PK-tokeni, mis kinnitab, et kasutaja on autentitud ning võimaldab kontrollida, et loodud võtmed kuuluvad deklareeritud kasutajale. SSH avalik võti, millele on lisatud PK-token täiendavate andmete väljal, salvestatakse faili ~/.ssh/id_ecdsas ja hakkab edastuma ühenduse loomisel serverile SSH tööriista kaudu.
Serverisse ühenduse loomine toimub tavapärase SSH skeemi „ssh kasutajanimi@server” kaudu, kusjuures serveril kasutajanimi peab eelnevalt olema tuvastatud OpenID konto alusel, mida kasutaja kasutab. Seega on tööprotsess järgmine: SSH klient saadab SSH serverile avaliku võtme ning server käivitab käsu „opkssh verify” võtme kontrollimiseks.
OpenID konto sidumiseks peab serveri administraator käivitama käsu „opkssh add”. Näiteks, et lubada sisse logimine serverisse kasutaja „root” alla OpenID autentimise kaudu Gmaili konto test@gmail.com kaudu, tuleb käivitada „sudo opkssh add root test@gmail.com google”, mille järel saab klient selle konto parameetritega sisse logida käsuga „ssh root@serveri_aadress”.
Konto seotakse ka käsitsi konfiguratsioonifaili kaudu /etc/opk/auth_id (või ~/.opk/auth_id), kuhu eeltoodud näite jaoks salvestatakse rida «root test@gmail.com https://accounts.google.com». Lisaks saab faili /etc/opk/providers kaudu määrata lubatud OpenID pakkujate nimekirja, nende seadistused ja lubatud kliendi-ID-de loendi.

Allikas: opennet.ru
