Bezpečný přístup na správu souborů pomocí ssh klíče

Server webhosting.vse.cz podporuje bezpečné přihlášení na správu souborů pomocí ssh klíče. Klíč musí být uložen v adresáři .ssh a jeho jméno musí být authorized_keys. Plná cesta tedy bude vypadat /.ssh/authorized_keys. Tento soubor je přístupný pomocí správy souborů (SFTP přístup – WinSCP, FileZilla, apod.).

O co jde?

SSH klíč je bezpečný způsob, jak se přihlásit k serveru, aniž by bylo zadáno heslo. Skládá se ze dvou částí – privátní a veřejné. Privátní máte vždy u sebe a nikomu ji nepředáváte. Veřejná část se umístí na server do výše popsaného souboru authorized_keys. Na jednotlivých řádcích tam může být i víc veřejných částí. To se hodí v případě, že vás bude k serveru přistupovat více. Každý si přidá svůj řádek se veřejným klíčem. Nikdo s nikým nesdílí svůj privátní klíč. Ověření uživatele vychází z jednoduché filosofie. Vezmete-li nějaká data, která zašifrujete privátním klíčem, tak je jste schopni rozšifrovat pouze jeho párovým veřejným klíčem a naopak. Server tedy nově přistupujícímu uživateli pošle náhodná data. Uživatel je pomocí svého privátního klíče zašifruje. Pokud se serveru podaří takto vrácená data dešifrovat pomocí veřejného klíče, tak ví, že na druhé straně je oprávněný uživatel a přihlášení je úspěšné. Hlavní výhoda je v použití náhodných dat při ověření uživatele. Při dalším přihlášení se vytvoří jiná náhodná data pro ověření. Nic se nepoužije vícekrát. Případný útočník tedy nemá šanci zjistit nějaké „heslo“, či něco jiného, co by mohl při příštím přihlášení použít k napodobení oprávněného uživatele. Jediné, co by mu v tom pomohlo, je získání přivátní části. To se ale nestane, protože tuto část velmi pečlivě opatrujete a nikomu ji nedáte.

Vytvoření ssh klíče je snadné

U unixového ssh stačí zadat příkaz ssh-keygen a patřičné parametry. Příkladem může být ssh-keygen -t ed25519 (je možné, že máte starší verzi ssh programu, který ještě nezná tento nový typ klíče. V tomto případě můžete použít ssh-keygen -t ecdsa nebo ssh-keygen -b 2048 -t rsa). Příkaz se vás zeptá na jméno souboru s klíčem a passphrase. To je heslo, kterým je chráněna privátní část. Z pohledu bezpečnosti je velmi doporučeno chránit privátní část heslem. Případný útočník, který by se privátní části zmocnil by ji nemohl bez hesla použít. Po zadání passphrase proběhne samotná tvorba klíče. Ten je uložen ve dvou souborech. Jeden je se jménem, které jste zadali a obsahuje privátní část. Druhý soubor má navíc příponu .pub a obsahuje veřejnou část (tedy tu, kterou je potřeba nahrát na server webhosting.vse.cz do souboru authorized_keys).

Je jasné, že se nikomu nechce neustále vkládat heslo k privátní části klíče. Ke zjednodušení této situace lze použít program ssh-agent, který může vaši privátní část udržet v paměti rozšifrovanou. Pro použití stačí vložit tyto příkazy:

Spustit agenta a jeho konfigurační parametry uložit do souboru
ssh-agent > ~/.agent

Použít konfigurační parametry tak, aby se staly součástí systémového prostředí
. ~/.agent

Přidat samotný privátní klíč. Velmi se doporučuje použití parametru -t, který určuje životnost klíče v paměti v sekundách. Například 14400 jsou 4 hodiny, po kterých je rozšifrovaný klíč z paměti automaticky vymazán
ssh-add -t 14400 jméno_souboru_s_privátní_částí

Ve Windows je použití klíče pro přihlášení také snadné. Je vhodné použít sadu programů PuTTY verze 0.70 a vyšší. Pro vytvoření klíče lze použít program PuTTY Key Generator. Po jeho spuštění překontrolujte, že je typ klíče nastaven na ED25519 – viz obrázek

Tvorba klíče
Pak už jenom stačí stiknout tlačítko Generate, chvíli vytvářet náhodný pohyb myší nad horní částí tohoto okna a klíč je na světě.

Uložení klíče

V horním textovém poli je zobrazena veřejná část klíče tak, jak ji je potřeba vložit do souboru authorized_keys na serveru webhosting.vse.cz. Tento formát je vhodný pro OpenSSH. Pozor, je to delší text. Při kopírování musíte označit i tu část, která je na dalších řádcích. Klíč končí textem ed25519-key-datum_vytvoření. Celý tento text je jeden dlouhý řádek. Nezapomeňte, že cesta bude vypadat /.ssh/authorized_keys. Tento soubor je přístupný pomocí správy souborů (SFTP přístup – WinSCP, FileZilla, apod.).

Po vyplnění passphrase můžete uložit privátní klíč. Passphrase je heslo, kterým je chráněna privátní část. Z pohledu bezpečnosti je velmi doporučeno chránit privátní část heslem. Případný útočník, který by se privátní části zmocnil by ji nemohl bez hesla použít.

Aby jste nemuseli při každém přístupu pomocí WinSCP zadávat passphrase ke klíči, tak si lze život zjednodušit pomocí programu Pageant. Po jeho spuštění si můžete tlačítkem Add key přidat do paměti dešifrovaný privátní klíč (program Pageant najdete jako ikonu v oznamovací oblasti vedle hodin). Poté programy WinSCP nebo psftp použijí privátní klíč programu Pageant a vy nemusíte opakovaně zadávat passphrase. Je velmi doporučeno, aby jste tlačítkem Remove key mazali dešifrovaný privátní klíč, když budete odcházet od počítače nebo jej hibernovat.