🔍

SSH, kulcsok, jelszavak és tanúsítványok

Átfogó, példákkal illusztrált magyarázat — DigitalOcean · PuTTY · Linux · Windows · telefon · notebook kontextusban. Referencia, amit később is elő tudsz venni.

Tartalom

  1. A nagy kép egy percben
  2. Titkosítás vs. hitelesítés
  3. Mi az SSH valójában
  4. Jelszó vs. kulcs — a két belépési mód
  5. A kulcspár működése lépésről lépésre
  6. Fingerprint (ujjlenyomat)
  7. authorized_keys — a kulcs a szerveren
  8. ssh-agent / Pageant
  9. DigitalOcean rétegek (itt a legtöbb félreértés)
  10. Tanúsítványok — teljesen más világ
  11. Platformok: Windows, Linux, telefon, notebook
  12. Kényelmi trükk: ~/.ssh/config
  13. Jó gyakorlatok a te helyzetedre
  14. Összefoglaló tábla

1.A nagy kép egy percben

Amikor egy távoli géphez — például a DigitalOcean Dropletedhez — csatlakozol, mindig két külön kérdés merül fel, és a legtöbb zavar abból ered, hogy ezeket összemossuk:

Az SSH mindkettőt egyszerre oldja meg: titkosított terminált ad, és közben hitelesít téged (jelszóval vagy kulccsal). A DO panelen látott „Certificates” menü viszont egy egészen más dolog: az a weboldalad látogatóinak szóló HTTPS-titkosításról szól, nem a te belépésedről. Ezt a kettőt tartsd külön a fejedben — a lap végén a táblázat is ezt hangsúlyozza.

2.Titkosítás vs. hitelesítés — a fogalmi alap

Két családja van a kulcsoknak:

Szimmetrikus kulcs

Ugyanaz a titok nyit és zár, mint egy közönséges lakatkulcs. Gyors, de a titkot valahogy meg kell osztani — és ha megosztod, kockázatos.

Aszimmetrikus kulcs (nyilvános/privát pár)

Ez az SSH-kulcsok és a tanúsítványok lelke. Egy összetartozó pár: a privát kulcs csak nálad, a nyilvános kulcs szabadon szétosztható.

Analógia: a nyilvános kulcs egy lakat, amiből annyit gyártasz, amennyit akarsz, és bárhová kirakod (a szerverre, a GitHubra, akárhová). A privát kulcs az egyetlen kulcs, ami ezeket a lakatokat nyitja — ezt soha, senkinek nem adod ki, és sosem megy át a hálózaton.

A lényegAmit nyilvános kulccsal „lezárnak”, azt csak a hozzá tartozó privát kulccsal lehet feloldani (és fordítva: amit a privát kulcs aláír, azt a nyilvánossal bárki ellenőrizheti). Ezen a matematikán áll az egész.

3.Mi az SSH valójában

SSH = Secure Shell. Egy protokoll (alapból a 22-es porton), amivel titkosított parancssort/terminált kapsz egy távoli géphez. Amikor ssh root@159.89.x.x parancsot adsz, két bizalmi irány dől el egyszerre:

4.Jelszó vs. kulcs — a két belépési mód

4/a. Jelszavas belépés

A szerver a felhasználó jelszavának egy hashét tárolja (Linuxon a /etc/shadow fájlban). Belépéskor beírod a jelszót, a szerver ellenőrzi.

4/b. Kulcsos belépés (SSH-kulcs)

A jelszó helyett a fent leírt nyilvános/privát kulcspárt használod. A privát kulcs a gépeden marad, a nyilvános a szerverre kerül. A belépés lényege: a privát kulcs sosem hagyja el a gépedet, mégis bizonyítja, hogy nálad van.

Miért erősebb?Egy jó SSH-kulcsot gyakorlatilag lehetetlen kitalálni vagy végigpróbálni, és semmi „begépelhető titok” nem utazik a hálón, amit el lehetne kapni. Ezért éles szerveren szinte mindig kulcsos belépést használunk.

5.A kulcspár működése lépésről lépésre

1) Kulcsot generálsz a saját gépeden (Linux/Mac/Windows/telefon egyaránt tudja):

ssh-keygen -t ed25519 -C "otthoni-notebook"

Ez két fájlt hoz létre, tipikusan a ~/.ssh/ mappában:

2) A generáláskor kérhet egy passphrase-t. Ez egy jelszó, ami magát a privát kulcsfájlt titkosítja a te gépeden. Ha ellopják a laptopod, a kulcs a passphrase nélkül használhatatlan. (Ne keverd össze a szerver-jelszóval — ez helyi védelem.)

3) A nyilvános kulcsot felviszed a szerverre, annak ~/.ssh/authorized_keys fájljába. Linux/Mac-en egy paranccsal:

ssh-copy-id -i ~/.ssh/id_ed25519.pub root@159.89.x.x

4) Belépéskor a szerver egy véletlen „kihívást” küld, a klienced a privát kulccsal aláírja, a szerver a nála lévő nyilvános kulccsal ellenőrzi. Ha stimmel, bent vagy — a privát kulcs egy bitje sem ment át a hálón.

Egy DigitalOcean-specifikus buktatóAttól, hogy egy nyilvános kulcs a DO-fiókodban szerepel (lásd 9. pont), még nem biztos, hogy a Droplet authorized_keys fájljában is benne van. A tényleges belépést mindig a szerveren lévő fájl dönti el, nem a fiók-lista.

6.Fingerprint (ujjlenyomat)

Egy kulcs teljes szövege hosszú és olvashatatlan, ezért van róla egy rövid, egyedi ujjlenyomat — pont, mint amit a DO paneleden láttál:

PClab   11:99:5f:68:e3:41:f8:e2:fc:04:71:b3:58:fe:86:ab

Ez a PClab nevű nyilvános kulcs azonosítója a fiókodban. Két, gyakran összekevert fajta ujjlenyomat létezik:

7.authorized_keys — a kulcs a szerveren

A szerver oldalán a beléphető nyilvános kulcsok a felhasználó ~/.ssh/authorized_keys fájljában sorakoznak, soronként egy kulcs. Egy sor így néz ki:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...9Xk  otthoni-notebook

Három rész: a típus (ssh-ed25519), maga a kulcs, és a végén a comment (otthoni-notebook). A comment technikailag lényegtelen, emberi szempontból viszont aranyat ér: ebből tudod, melyik sor melyik eszközé.

Visszavonás (revocation) a gyakorlatbanHa egy eszközöd elveszik, csak kitörlöd az ő sorát az authorized_keys-ből — az az eszköz azonnal nem tud belépni, a többi érintetlen marad. Ezért ér annyit, hogy eszközönként külön kulcs van, beszédes commenttel. Ha több eszköz ugyanazt a privát kulcsot használja, ezt nem tudod megtenni finoman.

8.ssh-agent / Pageant — hogy ne kelljen mindig passphrase

Ha a privát kulcsod passphrase-zel védett, minden belépésnél be kellene írni. Az ügynök (agent) ezt oldja fel: egyszer megadod a passphrase-t, és az agent a memóriában tartja a feloldott kulcsot a munkamenet végéig.

9.DigitalOcean rétegek — itt a legtöbb félreértés

A DO-nál több, egymásra rétegződő dolgot hívnak „kulcsnak” vagy „hozzáférésnek”. Érdemes szétszálazni:

9/a. A DO-fiók „SSH Keys” listája provisioning

Amit a paneleden láttál (PClab + ujjlenyomat), az egy nyilvános kulcs tár a fiókodban. Ez önmagában nem belépés — hanem egy készlet, amiből új Droplet létrehozásakor kiválaszthatod, melyik kulcsokat másolja be a DO automatikusan az új szerver root authorized_keys fájljába. Meglévő Dropletet visszamenőleg nem módosít.

9/b. Ami ténylegesen a Dropleten van a valódi belépés

A tényleges SSH-belépést a szerveren lévő ~/.ssh/authorized_keys dönti el. A fiók-lista és a szerver tartalma eltérhet (pl. kézzel hozzáadtál/töröltél kulcsot a szerveren). Kétség esetén mindig a szerver fájlját nézd.

9/c. Webes konzol + Droplet Agent (a „DOTTY” kulcs) DO-kezelt

A DO ad egy böngészős konzolt (Droplet → Access → Launch Console), ami nem a 22-es porton megy, hanem a DO infrastruktúráján keresztül — vészhelyzeti út, ha az SSH nem elérhető. Hogy ez működjön, a Droplet Agent beteszi a saját, DO-menedzselt kulcsát (nálad ez a DOTTY nevű). Ez a te saját fiókod eszköze, nem külső fél.

Ne piszkáld kézzel a DOTTY-kulcsotMivel DO-menedzselt, ha kézzel törlöd az authorized_keys-ből, az agent bármikor visszaírhatja. Ha egyáltalán hozzá akarsz nyúlni, a DO panelból tedd (Droplet → Access), ne fájlszerkesztéssel. A legegyszerűbb: hagyd békén.

9/d. Recovery konzol + root jelszó (break-glass) végső mentőöv

Ha egyszer se kulcs, se konzol-grant nem működne, marad a recovery konzol, ahova root jelszóval jutsz be. Ezért éri meg előre beállítani egy erős root jelszót (a szerver saját shelljében sudo passwd root) — ez a leginkább független, „betörőüveg” mentőöv, ami nem függ a DO-agent állapotától.

10.Tanúsítványok (Certificates) — teljesen más világ

A DO paneleden a „Certificates for Load Balancers and Spaces” rész nem a te belépésedről szól. Ezek TLS/SSL tanúsítványok: a weboldalad és a látogatók közti HTTPS forgalmat teszik titkossá és hitelessé (a lakat ikon a böngésző címsorában). A Let's Encrypt ezekből ad ingyeneset.

SSH-kulcs teTLS-tanúsítvány web
Mit véd?A te belépésedet a szerverreA látogatók és a weboldal közti forgalmat
Kihez szól?Hozzád (adminhoz)Bárkihez, aki megnyitja a webhelyet
Hol jelenik meg?SSH-belépés, terminálBöngésző, HTTPS, lakat ikon
DO menüSettings → Security → SSH KeysCertificates / Load Balancers / Spaces

Analógia: az SSH-kulcs a hátsó bejárat kulcsod, amivel te bemész üzemeltetni a boltot. A TLS-tanúsítvány a kirakati pecsét, ami a vásárlóknak igazolja, hogy hiteles és lehallgathatatlan a vonal, amin veled beszélnek. A kettőnek semmi köze egymáshoz.

Mellékszál a teljesség kedvéértLétezik „SSH certificate” fogalom is (egy CA aláírja a felhasználói kulcsokat, nagy flottákra) — de ez egy fejlett, vállalati megoldás, és nem ugyanaz, mint a DO panel „Certificates” menüje. Neked most nem téma.

11.Platformok: Windows, Linux, telefon, notebook

Fontos, hogy a kulcs-elv mindenhol ugyanaz — csak az eszköz és a fájlformátum tér el.

Windows — két út

Gyakori Windows-hibaA PuTTY nem eszi meg a sima OpenSSH privát kulcsot, és fordítva. Ha PuTTY-t használsz, a kulcsod legyen .ppk; ha a beépített ssh-t, akkor OpenSSH formátum. PuTTYgen mindkét irányba tud konvertálni.

Linux / macOS

Natív OpenSSH mindenhol. A tipikus eszközök: ssh-keygen -t ed25519 a generáláshoz, ssh-copy-id a nyilvános kulcs felviteléhez, ~/.ssh/config a kényelmes álnevekhez (lásd lejjebb).

Telefon

Notebook / desktop

Nincs külön „notebook-mód” — az számít, milyen OS fut rajta (Windows → fenti két út; Linux/Mac → natív OpenSSH). A jó szokás: minden gépnek saját kulcsa, hogy egyenként visszavonható legyen.

12.Kényelmi trükk: ~/.ssh/config

Ahelyett, hogy minden belépésnél begépeled az IP-t, a usert és a kulcs elérési útját, adhatsz nekik egy álnevet:

# ~/.ssh/config
Host dropletem
    HostName 159.89.x.x
    User root
    IdentityFile ~/.ssh/id_ed25519_droplet

Ezután elég ennyi:

ssh dropletem

13.Jó gyakorlatok — kifejezetten a te helyzetedre

14.Összefoglaló tábla — melyik mi, egy pillantásra

FogalomMit hitelesít / védHol tároltHol találkozol vele
Jelszó Téged, a szerveren Hash a szerveren (/etc/shadow) SSH belépés, DO recovery konzol
SSH privát kulcs Téged (aláír a nevedben) Csak a te eszközödön Minden kulcsos SSH-belépés
SSH nyilvános kulcs — (a privát párját ellenőrzi) Szerver authorized_keys + DO-fiók lista DO „SSH Keys”, szerver fájl
Fingerprint Egy kulcs azonosítója Kiszámolt rövid azonosító DO panel, első csatlakozás
Host kulcs / known_hosts A szervert (feléd) Szerveren + a te known_hosts „authenticity of host…” kérdés
DOTTY (Droplet Agent) A DO webes konzolt Szerver, DO-menedzselt Böngészős konzol
TLS-tanúsítvány A weboldalt a látogatóknak Load Balancer / Spaces / szerver HTTPS, böngésző lakat ikon
.ppk (PuTTY) Ugyanaz, mint az SSH privát kulcs Windows gépeden PuTTY / Pageant
A három mondat, amit érdemes megjegyezni 1) Az SSH-kulcs a te belépésed; a TLS-tanúsítvány a látogatók HTTPS-e — két külön világ. 2) A privát kulcs sosem hagyja el az eszközödet; a nyilvános kulcsot bárhová felteheted. 3) A tényleges belépést a szerveren lévő authorized_keys dönti el, nem a DO-fiók listája.