Átfogó, példákkal illusztrált magyarázat — DigitalOcean · PuTTY · Linux · Windows · telefon · notebook kontextusban. Referencia, amit később is elő tudsz venni.
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.
Két családja van a kulcsoknak:
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.
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.
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:
The authenticity of host ... can't be established, és megkérdezi, elfogadod-e. Ha igen, a szerver ujjlenyomata bekerül a ~/.ssh/known_hosts fájlba. Ha később ez megváltozik, az SSH riaszt — ez véd a „valaki más adja ki magát a szerverednek” támadás ellen.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.
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.
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:
id_ed25519 — a privát kulcs. Ez soha nem megy sehova.id_ed25519.pub — a nyilvános kulcs. Ezt szabad szétküldeni.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.
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.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:
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é.
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.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.
ssh-agent + ssh-add ~/.ssh/id_ed25519.A DO-nál több, egymásra rétegződő dolgot hívnak „kulcsnak” vagy „hozzáférésnek”. Érdemes szétszálazni:
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.
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.
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.
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.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.
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 te | TLS-tanúsítvány web | |
|---|---|---|
| Mit véd? | A te belépésedet a szerverre | A 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ál | Böngésző, HTTPS, lakat ikon |
| DO menü | Settings → Security → SSH Keys | Certificates / 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.
Fontos, hogy a kulcs-elv mindenhol ugyanaz — csak az eszköz és a fájlformátum tér el.
ssh root@159.89.x.x. A kulcsok a C:\Users\Te\.ssh\ mappában, generálás: ssh-keygen. Ugyanaz a világ, mint Linuxon..ppk. A PuTTYgen programmal generálsz vagy konvertálsz egy sima kulcsot .ppk-vá; a kulcsot a Connection → SSH → Auth alatt töltöd be, az agent-szerepet a Pageant viszi..ppk; ha a beépített ssh-t, akkor OpenSSH formátum. PuTTYgen mindkét irányba tud konvertálni.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).
ssh-keygen/ssh megy, mint asztali gépen. Vagy egy dedikált app, pl. Termius.authorized_keys-ébe (beszédes commenttel, pl. telefon-termux), a privát rész a telefonon marad.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.
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
telefon-termux, ceges-laptop, otthoni-desktop). Így egy elveszett eszközt egyetlen sor törlésével kizársz, a többi marad.sshd_config: PasswordAuthentication no) — de tényleg csak akkor, ha a kulcsos belépés biztosan megy, és van független mentőöved.| Fogalom | Mit hitelesít / véd | Hol tárolt | Hol 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 |
authorized_keys dönti el, nem a DO-fiók listája.