XBMC-Kodi.cz

Úplná verze: RPi - komunikace přes SSH a změna zabezpečení
Prohlížíte si holou variantu vašeho obsahu. Prohlédněte si plnou verzi s příslušným formátováním.
Předpokládám že většina zde zná a provozuje vzdálenou komunikaci pomocí protokolu SSH (Secure Shell). Díky němu můžete celkem bezpečně posílat příkazy a kopírovat soubory ze vzdáleného připojení. Mezi nejpoužívanější patří nástroj PuTTY nebo WinSCP, který se mi velice osvědčil  pro vzdálenou práci se soubory.

Komunikace přes SSH je poměrně bezpečná a veškerá odesílaná data pomocí tohoto protokolu jsou šifrována. Problém je, že u jednodeskových PC (SBC) typu Raspberry jsou přihlašovací údaje veřejně dostupná po celém internetu, takže případný útočník má poměrně dobrou předlohu jak se nabourat do vašeho systému. V případě že využíváte služeb SSH pouze v rámci domácí sítě, tak riziko není až tak velké, přesto mi vadilo že některé systémi neumožnují přihlašovací údaje změnit, například zde populární LibreELEC. Ti z vás co instalovali operační systém Raspbian možná zpozorovali varovnou hlášku, která se objeví po povolení SSH. Obsahem hlášky je upozornění, že pokud budete používat přednastavené heslo vystavjete se riziku napadení vašeho zařízení. Tato hláška se bude vždy objevovat po startu OS dokud nezměníte heslo nebo nezakážete používání SSH komunikace.

Pro lepší zabezpečení je tedy vhodné ihned po instalaci systému změnit heslo nebo SSH vypínat po každém použití. Avšak jak už jsem psal výše LibreELEC změnit heslo neumožňuje a vypínat komunikaci po každém použití je pro mě dosti otravné  8 .
Po troše pátrání jsem zjistil že se dá použít místo přihlašovacích údajů takzvaný SSH klíč. SSH klíče představují unikátní zašifrovaný přístupový mechanismus, který se skládá z veřejného a privátního klíče. Na jedné straně z pozice klienta (zařízení odkud budete vzdáleně ovládat) musí být přítomen privátní klíč a na straně druhé je server s veřejným klíčem, k němuž se přihlašujete.

Podrobnější informace naleznete například zde: https://helpdesk.trustica.cz/tkb/obecne/ssh-klice

Metodu přihlašování pomocí klíčů jsem úspěšně zprovoznil na systému LibreELEC, který mám nainstalovaný na RPi 3B+.

Postup je následující:

1. Nejdříve je potřeba vygenerovat dva jedinečné klíče, veřejný a privátní. Nástrojů bude asi několik, já jsem použil PuTTY generátor spustitelný na Windows, který je ke stažení zde: puttygen.exe . U linuxových systému lze použít například příkaz:

Kód:
ssh-keygen

Takto vypadá spuštěný PuTTY generátor, kde vašim úkolem je hýbat kurzorem myši, čímž dojde k vytvoření unikátních klíčů:
[attachment=4024]

Výsledek generování:
[attachment=4025]

Klíč si libovolně pojmenujte, položka Key comment , dále zadejte "heslo" pro privátní klíč Key passphrase  a poté si privátní klíč uložte (měl by mít příponu .ppk). Veřejný klíč, který najdete v okénku Public key for pasting into OpenSSH authorized_keys file je potřeba vložit na server ke kterému budeme vzdáleně přistupovat, což je v tomto případě RPi se systémem LibreELEC.
Postupoval jsme tak, že jsem veřejný klíč vložil do schránky (ctrl+c) a poté vložil do vytvořeného souboru v LibreELEC- storage/.ssh/authorized_keys
Veřejný klíč se většinou vkládá do domovského adresáře, v případě LibreELEC je to výše zmíněná cesta, kde pouze vytvoříte soubor s názvem authorized_keys a do něj vložíte klíč.

2. Nyní už máme ze strany serveru (RPi) vše přichystáno a přistoupíme k samotnému přihlášení pomocí PuTTY.
Zde je potřeba provést několik nastavení:
- v položce Connection\SSH\Auth vybereme cestu k privátnímu klíči
[attachment=4027]
- přidáme automaticke vyplňování jména 
[attachment=4028]
- vyplníme IP adresu RPi  a uložíme pod libovolným názvem
[attachment=4029]

Po otevření komunikace budete vyzváni k zadání hesla pro privátní klíč, pokud jej zapíšete správně dojde k navázání spojení a můžete zadávat příkazy dle libosti:
[attachment=4030] [attachment=4031]

Pro nastavení WinSCP je situace podobná, stačí vyplnit IP adresu RPi, jméno a opět zadat cestu k privátnímu klíči:
[attachment=4032][attachment=4033]

3. Funguje li vše jak má není potřeba aby bylo aktivní klasické přihlášení pomocí jména a hesla. LibreELEC na tuto možnost pamatoval a v nastavení můžete aktivovat pouze přihlášení za pomocí klíčů:
[attachment=4034]

Na závěr zmíním že přihlašování pomocí klíčů je považováno jako bezpečnější řešení, protože i když by se náhodu privátní klíč dostal do nepovolaných rukou je stále chráněn za pomoci hesla (passphrase).
Super a díky. Už několikrát jsem se na to chystal, že to prostuduji. Dostat to takto naservírované na talíři, to je nádhera.
Těší mě že příspěvek někomu pomůže, nebyl jsem si tak úplně jist zda píši na správné fórum 6 .

Menší dodatek:

1. Zapomněl jsem zmínit, že za zcela bezpečné se považují klíče o délce 2048 bitů, je však možné je upravit podle potřeby nejlépe v rozsahu 2048 - 4096 bitů. Kratší nebo delší nemusí být na některých serverech podporovány !

V PuTTY generátoru tuto hodnotu jednoduše změníte v příslušném okénku:
[attachment=4038]

nebo pomocí přkazu, doplněním argumentu -b (platí pro Linux či macOS):
Kód:
ssh-keygen -b 4096

2. Pokud se vám náhodou stane, že z nějakého důvodu přijdete o veřejný klíč (např. poškození systému na straně serveru), můžete jej poměrně jednoduše znovu získat za pomocí PuTTY generátoru. Stačí vybrat privátní klíč a zadat heslo (passphrase):
[attachment=4039]
Obráceně to samozřejmě nefunguje, ztratíte-li privátní klíč nezbývá nic jiného než vygenerovat novou dvojci klíčů.