SSH2 a jeho použití v PHP – základy
Jistě jste jako vývojáři nějaké aplikace v PHP potřebovali uskutečnit práci s operačním systémem, na kterém vám běží celý server, a zároveň jste řešili dilema na téma bezpečnost celého serveru. Jak pracovat s pokročilými funkcemi operačního systému s minimálním rizikem napadení serveru skrze nevhodně nastavené PHP se vám pokusím nastínit v tomto článku.
Extension (rozšíření) SSH2 je vcelku nové a přináší do PHP spoustu zajímavých možností. Jako příklad bych asi uvedl bezpečný transfer souborů a přímou správu operačního systému, pod kterým běží stroj, na který se připojujete. Samozřejmostí je požadavek, aby server nebo stroj, na který se připojujete, měl spuštěný SSH server a vy na něm měli nějaký uživatelský účet.
Instalace extension SSH2 do PHP – Linux
Pokud nemáme na serveru nainstalované OpenSSL, stáhneme jej a nainstalujeme podle návodu, který bývá součástí balíku. Podle dokumentace PHP je dobré mít nainstalovaný přímo balík OpenSSL-dev, který obsahuje některé utility pro vývojáře.
Protože existují dva hlavní ověřené postupy kompilace extension modulu ssh2.so, uvedu ten kratší a lépe automatizovaný. Zadáme tedy pouze tento příkaz, který nám vygeneruje již zmíněný ssh2.so:
phpize && ./configure –with-ssh2 && make
Dále nakopírujeme vzniklý modul ssh2.so do složky definované v konfiguračním souboru PHP (php.ini) jako extension_dir a přidáme do téhož konfiguračního souboru PHP následující řádek:
extension=ssh2.so
Tím jsme vlastně PHP oznámili, že má načítat tento modul.
Instalace extension SSH2 do PHP – Windows
Instalace modulu na servery s Windows je o něco jednodušší. Nemusíme nic kompilovat, pouze stáhneme příslušný modul v binární podobě z adresy http://snaps.php.net, nakopírujeme ho do složky definované v konfiguračním souboru PHP jako extension_dir a přidáme do téhož konfiguračního souboru PHP (php.ini) tento řádek:
extension=php_ssh2.dll
A je hotovo. Ať už máme Windows nebo Linux, SSH2 by již mělo po restartu webserveru běžet. Pokud ne, zkuste se vrátit na začátek a popřemýšlet o možných chybách.
Spojení a práce s SSH2 v PHP
Pro začátek malý příklad navázání spojení se serverem a následný pokus o přihlášení:
<?php
if(! $spojeni = ssh2_connect(„mujserver.mojedomena.neco“, 22)) { die(„Chyba spojeni!“); }
// Vytvoří spojení s hostitelem na adrese mujserver.mojedomena.neco na
// portu 22 a zároveň dá vědět, pokud spojení nebude možné uskutečnit.
if (ssh2_auth_password($spojeni, „uzivatel“, „123456799“)) {
echo „Prihlaseni probehlo v poradku!“;
} else {
die(„Prihlaseni nebylo uskutecneno v poradku!“);
}
// Pokusí se přihlásit jako uživatel „uzivatel“ s heslem „123456799“,
// pokud jsou přihlašovací údaje v pořádku, dostaneme hlášku o tom,
// že je vše v pořádku, pokud ne, dostaneme méně příjemnou hlášku…
?>
Máte podezření, že by se někdo mohl pokusit o hack spojení, případně si rádi pohlídáte fingerprint vzdáleného ssh serveru? Řešení hledejte ve funkci ssh2_fingerprint
:
<?php
$znamy_hostitel = ‚223B9F343CC5032323F45A1‘;
// Zde definujeme proměnnou, ve které je fingerprint vzdáleného ssh
// serveru, který známe a hlavně očekáváme.
$spojeni = ssh2_connect(„mujserver.mojedomena.neco, 22);
// Jako předtím – spojíme se se serverem.
$fingerprint = ssh2_fingerprint($spojeni, SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);
// Zjístíme fingerprint a uložíme do proměnné.
if ($fingerprint != $znamy_hostitel) { die(„Nesouhlasi fingerprint!“);
}
// A teď už jen porovnáme známý fingerprint s tím, který nám
// právě server nabízí.
?>
A co tak spustit vzdáleně na serveru nějaký ten program nebo skriptík? Ani to není problém:
<?php
$spojeni = ssh2_connect(„mujserver.mojedomena.neco“, 22);
// Jako vždy nejdříve vytvoříme spojení.
ssh2_auth_password($spojeni, „uzivatel“, „123456799“);
// Přihlásíme se. Samozřejmě uvedeme platné údaje – uživatele, heslo i
// server.
ssh2_exec($spojeni, „reboot“);
// A teď pošleme vzdálenému serveru nějaký ten příkaz, co má udělat.
// Protože mě nic jiného nenapadlo, restartuji OS.
?>
Protože modul SSH2 obsahuje mnoho funkcí, bylo by náročné vypisovat je zde všechny a ke každé uvádět nějaký příklad. Bližší popis všech funkcí modulu najdete v dokumentaci PHP na adrese http://www.php.net/manual/en/ref.ssh2.php.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 2024 -
Nepodceňte UX na vašem webu: Proč na něm záleží?
10. dubna 2024 -
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024 -
Responzivní design: Proč by ho neměl ignorovat žádný vývojář?
27. listopadu 2023
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024