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.