A Cloudflare bemutatta az opkssh (OpenPubkey SSH) eszközkészletet, amely lehetővé teszi a központosított hitelesítési eszközök integrálását az OpenSSH-ba, lehetővé téve a bejelentkezést OpenID Connect szolgáltatókkal. Az opkssh segítségével elkerülhető a SSH-kulcsok manuális kezelése és beállítása, valamint lehetővé teszi a csatlakozást a szerverhez bármely hosztról, anélkül hogy zárt kulcsokat kellene létrehozni minden kliens számítógépen, és manuálisan másolni a nyílt kulcsokat a szerverre. A csatlakozáshoz elegendő, ha a szerveren összekapcsoljuk a fiókot az OpenID szolgáltatóval. Az eszközkészlet kódja Go nyelven íródott, és Apache 2.0 licenc alatt terjesztik.
Az opkssh kompatibilis a Google, Microsoft/Azure és Gitlab OpenID szolgáltatókkal, ami lehetővé teszi a bejelentkezést a meglévő gmail.com, microsoft.com és gitlab.com fiókokkal. Az opkssh használatakor a korlátlan idejű SSH kulcsok helyett ideiglenes kulcsok generálódnak, amelyek néhány óráig érvényesek és az OpenID szolgáltatótól kapott megerősítés alapján jönnek létre. Az ilyen kulcsok kiszivárgása a lejárati idő után nem jelent biztonsági kockázatot. Alapértelmezés szerint a kulcs érvényességi ideje 24 óra, ezt követően újra az OpenID segítségével szükséges azonosítani magát.
Az OpenSSH-val való integráció az SSH protokoll kiterjesztésének lehetőségén alapul, amely lehetővé teszi tetszőleges adatok csatolását az SSH tanúsítványokhoz. Az OpenID-n keresztüli hitelesítés után az ügyfél létrehoz egy nyílt kulcsot, amely tartalmaz egy PK-token-t, amely megerősíti, hogy a kulcs a megadott felhasználóhoz tartozik. A token integrálva van az SSH protokollba az SSH tanúsítvány kiegészítő adatok mezőjén keresztül. A PK-tokenek létrehozását és ellenőrzését a szerver oldalán az OpenPubKey kriptográfiai protokoll használatával végzik.
Az OpenPubKey lehetővé teszi egy nyilvános kulcs generálását és annak összekapcsolását az OpenID-szolgáltató által kiadott tokennel. A digitális aláírás által a szolgáltató megerősíti, hogy ezt a kulcsot a megnevezett hitelesített felhasználó hozta létre. Például a Google OpenID-szolgáltatója megerősítheti, hogy a felhasználó hitelesítve van, mint test@gmail.com. Az északi oldalon ellenőrzi a rendszer, hogy a csatolt token aláírását az OpenID-szolgáltató végezte-e, és hogy a digitális aláírás megfelel-e a megnevezett nyilvános kulcsnak, azaz a szerver meg tudja győződni arról, hogy valóban a test@gmail.com felhasználó hozta létre a nyilvános kulcsot az SSH-klienshez való csatlakozáshoz.

Az OpenSSH-val való integrálás a program, az opkssh megadásával történik az «sshd_config» konfigurációs fájlban az «AuthorizedKeysCommand» direktíva révén (például: «AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t»). Az OpenID-fiókok összekapcsolásának beállítása az SSH-szerveren történik. Az SSH-kliens oldalán nincs szükség a beállítások módosítására, azonban a bejelentkezés előtt futtatni kell az «opkssh login» parancsot, majd a megjelenő böngészőablakban ki kell választani az OpenID-szolgáltatót és azon keresztül végrehajtani a hitelesítést.
Az opkssh eszköz SSH-kulcsokat generál, és egy PK-token-t kap, amely megerősíti, hogy a felhasználó hitelesítve van, és lehetővé teszi annak ellenőrzését, hogy a létrehozott kulcsok a megnevezett felhasználóhoz tartoznak. Az SSH nyilvános kulcs, amelyhez egy PK-token van kapcsolva egy kiegészítő adatmezőn keresztül, a ~/.ssh/id_ecdsas fájlba kerül, és elkezd átkonfigurálva lenni csatlakozáskor az szerverhez ssh eszközhöz.
A szerverhez való csatlakozás a standard SSH séma szerint történik, mint «ssh login@server», miközben a szerveren login előzetesen az OpenID-fiókkal azonosítva kell legyen, amelyet a felhasználó használ. Így a folyamat lényege, hogy az SSH-kliens elküldi a nyilvános kulcsot az SSH-szervernek, míg a szerver futtatja az «opkssh verify» parancsot a kulcs ellenőrzésére.
Az OpenID-hez történő fiókcsatlakoztatáshoz a szerver adminisztrátora az «opkssh add» parancsot hajtja végre. Például ahhoz, hogy a «root» felhasználó alá lehetővé tegye a belépést OpenID-hitelesítéssel a test@gmail.com Gmail-fiók használatával, az alábbi parancsot kell futtatni: «sudo opkssh add root test@gmail.com google», ezt követően az ügyfél az adott fiók paramétereivel csatlakozhat a «ssh root@host_szerver» paranccsal.
A fiók kézi hozzárendelésére is van lehetőség a konfigurációs fájl segítségével, amely a "/etc/opk/auth_id" (vagy "~/ .opk/auth_id"), ahol a fenti példa esetében a "root test@gmail.com https://accounts.google.com" sor kerül rögzítésre. Ezenkívül a "/etc/opk/providers" fájlban meghatározható a megengedett OpenID szolgáltatók listája, azok paraméterei és az engedélyezett kliensazonosítók listája.

Forrás: opennet.ru
