Az SSH démon (sshd) – kiszolgálóoldalAz SSH démon (sshd) – kiszolgálóoldal

Az ssh és scp SSH kliensprogramok használatához futnia kell egy kiszolgálónak – az SSH démonnak – a háttérben, hogy figyelje a kapcsolatokat a 22-es TCP/IP porton. A démon az első elindításkor három kulcspárt hoz létre. Minden kulcspár egy saját és egy nyilvános kulcsot tartalmaz, mint azt a nyilvános kulcsú titkosításnál megszokhattuk. Az SSH-n keresztüli kommunikáció biztonsága érdekében a saját kulcsfájlok elérhetőségét a rendszeradminisztrátorra kell korlátozni. A fájljogosultságok az alapértelmezett telepítésnek megfelelően kerülnek beállításra. A saját kulcsokat csak helyileg kéri az SSH démon, és azokat nem is szabad senki másnak odaadni. A nyilvános kulcsokat (ezek nevének kiterjesztése .pub) viszont meg kell kapnia a kapcsolatot kérő kliensnek. Ezek bárki számára olvashatók.

A kapcsolatot az SSH-kliens kezdeményezi. A várakozó SSH-démon és a kérő SSH-kliens kicseréli azonosítási adatait, hogy összehasonlítsák a használt protokollt és szoftververziót, illetve megakadályozzák a rossz porton történő kapcsolódást. Mivel az eredeti SSH-démon leszármazott folyamata válaszol a kérésre, egyszerre több SSH-kapcsolat is létesíthető.

Az SSH-kiszolgáló és -kliens közötti kommunikációhoz az OpenSSH az SSH protokoll 1-es és 2-es verzióját támogatja. Alapértelmezés szerint az SSH protokoll 2-es változata kerül alkalmazásra. A protokoll 1-es változatának használatához írja ezt felül a -1 kapcsolóval. Ha frissítés után is az 1. változatot szeretné tovább használni, kövesse az /usr/share/doc/packages/openssh/README.SuSE fájl utasításait. Ez a dokumentum azt is leírja, hogy az SSH 1 környezet hogyan alakítható át pár lépés segítségével működő SSH 2 környezetté.

SSH 1-es verzió használata esetén a kiszolgáló elküldi a saját nyilvános kulcsát és egy kiszolgáló kulcsot, amelyet az SSH démon minden órában újból létrehoz. Ezekkel az SSH-kliens titkosítani tud egy szabadon választott munkamenet-kulcsot, amelyet átküld az SSH-kiszolgálónak. Az SSH-kliens azt is megmondja a kiszolgálónak, hogy mely titkosítási módszert (rejtjelezést) használja.

Az SSH 2-es verzió nem igényel kiszolgálókulcsot. Mindkét oldal a Diffie-Helman algoritmust használja a kulcsok cseréjéhez.

A saját kulcsra és a kiszolgálókulcsra feltétlenül szükség van a munkamenetkulcs visszafejtéséhez, azok nem származtathatók le a nyilvános részekből. Csak az érintett SSH-démon tudja visszafejteni a munkamenetkulcsot a saját kulcsai segítségével (lásd: man /usr/share/doc/packages/openssh/RFC.nroff). Ez a kezdeti kapcsolati fázis közelebbről is megfigyelhető az SSH-kliens -v hibakeresési lehetősége segítségével.

A kliens, ha már egyszer kapcsolatba lépett egy távoli géppel, a nyilvános kulcsokat a ~/.ssh/known_hosts fájlban tárolja. Ez megakadályozza azokat a támadásokat, amikor idegen SSH-kiszolgáló megpróbálnak hamis neveket és IP-címeket használni. Az ilyen támadások felismerhetők a ~/.ssh/known_hosts fájlban nem szereplő nyilvános kulcsról, vagy arról, hogy a kiszolgáló a megfelelő saját példány hiányában nem tudja visszafejteni a munkamenetkulcsot.

Az /etc/ssh/ fájlban tárolt saját és nyilvános kulcsokról ajánlatos biztonsági másolatot készíteni egy megfelelően védett külső helyre. Így a kulcsmódosítások észrevehetők, és a régiek egy újratelepítés után ismét használhatók. Ez megkíméli a felhasználókat a zavaró figyelmeztetésektől. Ha kiderül, hogy a figyelmeztetés dacára mégis egy megfelelő SSH-kiszolgálóról van szó, akkor a ~/.ssh/known_hosts fájlból el kell távolítani a rendszerre vonatkozó meglévő bejegyzést.