SSH

A HupWiki-ből...

Secure SHell

Az SSH voltaképpen egy hálózati prokoll amivel bejelentkezhetünk hálózaton át egy másik gépre, és az ehhez szükséges hálózati kapcsolat titkosítva lesz. A UNIX-ban szokásos CLI-s menedzsment feladatokon kívűl az SSH-t szokás pl tunnelezésre is használni, hogy két gép között biztonságos adatcsatornát hozzunk létre.

Az SSH működése

Az ssh programcsomag funkcionálisan az RSH (Remote Shell=távoli futtatás) helyettesítője úgy, hogy biztonságos, erős autentikációval ellenőrzött titkosított kapcsolatokat hoz létre két „egymásban” nem bízó gép között, amelyeket a nem-biztonságosnak tekintett hálózat köt össze. Az ssh RSA kulcsokon alapul. Minden ssh-t használó gépnek van egy host-azonosító RSA kulcsa (default 1024 bit). A szerver gépen az sshd daemon ezen kívül generál egy szerver RSA kulcsot is (default 768 bit), amelyet óránként frissít és amit soha nem tárol a merevlemezen. Amikor egy kliens (SSH) hozzákapcsolódik a szerverhez (SSHD), először a szerver azonosítása történik meg. A szerver elküldi a host- és szerver-kulcsok publikus részét a kliensnek. A kliens összehasonlítja a host-azonosító publikus kulcsot az adatbázisban lévővel és ellenőrzi, hogy az változatlan-e. Ezután a kliens generál egy 256 bites véletlenszámot, amit a szerver host- és szerver-kulcsával egyaránt titkosít, majd ezt visszaküldi a szervernek. A szerver az RSA kulcsai ismeretében vissza tudja fejteni a titkosított véletlenszámot, amit a továbbiakban a két oldal a forgalom titkosító kulcsául (session key) fog használni - ettől a ponttól kezdve minden titkosított. A következő lépés a kliens azonosítása (rhosts autentikáció). Ha a kliens sikeresen azonosította magát, akkor a kapcsolat előkészítéseként különböző szolgáltatásokat kérhet a szervertől. Végül a kliens vagy egy shell indítását (slogin, ssh) vagy egy parancs végrehajtását kérheti a szervertől.


Implementációk