SSH

SSH klíče a Keepass

04.08.2021 | Tag Bezpečnost

Při užívání SSH klíčů je potřeba privátní část dobře chránit. V článku chci ukázat jeden z možných způsobů, jak lze uchovávat privátní část klíče v bezpečí a pohodlně ji používat při ověřování přes PuTTY.

Proč chránit SSH klíče je jasné. Pokud někdo ukradne SSH klíč a tuší, kam všude může mít vlastník přístup, je problém. Naštěstí dost správců hesel umí SSH klíče ukládat a případně i používat. Keepass to pomocí pluginu dovede také, tentokrát půjde o plugin KeeAgent. Ten dokáže SSH klíče uložené v Keepass databázi načíst a předat PuTTY pro přihlášení. Pokud je klíč chráněný frází, dokáže předat i frázi. Díky tomu není třeba držet klíč jako soubor na disku pro potřeby ověření.

Instalace pluginu je jednoduchá. Ze stránek se stáhne archiv a jeho obsah se nakopíruje do složky s pluginy v instalační cestě Keepassu. Při dalším spuštění Keepassu se plugin automaticky načte. Pod Tools – Options je na kartě KeeAgent možné nastavit některé globální parametry. Užitečné může být vyžadování potvrzení při každém zavolání klíče PuTTY.

KeeAgent0

KeeAgent by měl podporovat jak formát OpenSSH tak PuTTY, nicméně mně se vždy povedlo rozběhat jen klíče v OpenSSH formátu, proto návod budu směrovat na ně. Při použití s PuTTY to nijak nevadí. Pokud tedy máme klíč generovaný z Linux prostředí, můžeme privátní část rovnou uložit do databáze (ukážu níže). U klíčů generovaných přes PuTTYgen je potřeba privátní část převést do OpenSSH. Jak jsem říkala, KeeAgent by správně měl fungovat i s PuTTY formátem, ale u mě se to nepotvrdilo.

Převod klíčů v PuTTYgen je snadný. Načte se existující klíč a přes Conversions se uloží jeho privátní část jako OpenSSH.

PuTTYgen

V Keepassu se založí nový záznam pro SSH klíč (případně se upraví stávající, pokud už v Keepassu je). Pro KeeAgenta je podstatné pouze pole s heslem, které si převede jako pass frázi klíče. Pokud klíč žádnou frázi nastavenou nemá, pole s heslem se nechá prázdné. Zbytek polí je možné vyplnit pro své potřeby, ale plugin je nepotřebuje.

KeeAgent1

V záložce Advanced se v části File attachments přes tlačítko Attach vybere soubor s privátním klíčem.

KeeAgent2

V poslední záložce KeeAgent se pluginu umožní SSH klíč používat a dle vlastní potřeby se dále zvolí, zda se má klíč do agenta sám načíst při otevření Keepass databáze a zda se má po uzavření databáze odebrat. Princip je asi jasný – klíč je k dispozici přes plugin. Těmito volbami je možné záznamy načítat automaticky a mít je k dispozici pro přihlášení. Pokud se volby nezaškrtnou, klíč je třeba nahrát do agenta ručně přes pravou volbu u každého záznamu. Níže v Key Info je pak možné zkontrolovat, že se klíč rozpoznal správně.

KeeAgent3

Po založení nového záznamu ho můžeme nahrát do agenta. Klikne se pravým tlačítkem na nově vytvořený záznam a pod částí KeeAgent se vybere Load SSH key.

KeeAgent4

Že je klíč načtený můžeme ověřit vyvoláním agenta přes Tools – KeeAgent. Otevře to nové okno agenta.

KeeAgent5
KeeAgent6

Tím je vše připraveno, s PuTTY se v základu nemusí dělat nic. Předpokládejme, že veřejná část klíče už je v authorized_keys na serveru. V PuTTY tedy pouze zadáme adresu serveru, případně rovnou login name s adresou.

PuTTY1

Plugin je možné nastavit tak, aby si při každém použití klíče vyžádal potvrzení uživatelem, jak bylo zmiňováno na začátku. Pokud je v agentovi načteno klíčů víc, dá na výběr. Potvrzením okna se provede přihlášení včetně zadání fráze a tím je proces dokončen.

PuTTY2
PuTTY2

U WinSCP se dá fungovat dost podobně, protože je na PuTTY založené. Ani ve WinSCP se nemusí nic dopředu nastavovat, zadá se pouze server a login. Při přihlášení dá KeeAgent na výběr klíče, pokud jich je načteno víc, a bude chtít potvrzení. Poté proběhne přihlášení pomocí SSH klíče.