Végigjátsszuk egy kitalált szerver teljes életútját álkulcsokkal: otthoni PC, notebook és telefon hozzáférése, jelszó ⇄ kulcs átjárás, PuTTY, Claude Code telepítés és távoli menedzsment, alkalmi belépés vendégnek, és jelszó nélküli jogosultság. Minden adat kitalált — semmi valós beállítás nem történik.
tzlab-szerver · IP: 203.0.113.45 (ez a doksi-célú „TEST-NET” tartomány, nem valós gép)zoltan nevű sudo-felhasználó · a root csak vészhelyzetreSHA256:aX1…PC, notebook SHA256:bB2…NB, telefon SHA256:cC3…TEL
És a config-teszt, amit minden SSH-módosítás után lefuttatsz, mielőtt újraindítanád a szolgáltatást:
zoltan@tzlab-szerver:~$ sudo sshd -t
# ha nincs kimenet, a config szintaktikailag rendben van
A logika: minden eszköz a saját gépén generál egy kulcspárt, a privát rész ott marad, és csak a .pub nyilvános részt visszük a szerverre. A kulcsokat érdemes még a Droplet létrehozása előtt elkészíteni, hogy rögtön feltölthesd őket.
PS C:\Users\Zoltan> ssh-keygen -t ed25519 -C "otthoni-pc"
Enter file in which to save the key: C:\Users\Zoltan\.ssh\id_ed25519_pc
Enter passphrase: ******** # adj neki jelszót — ez a lopás elleni helyi védelem
# létrejön: id_ed25519_pc (privát) + id_ed25519_pc.pub (nyilvános)
# a nyilvános kulcs tartalmának kiírása (ezt fogod a szerverre másolni):
PS C:\Users\Zoltan> type C:\Users\Zoltan\.ssh\id_ed25519_pc.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...HAMIS_PC_KULCS...9Xk otthoni-pc
zoltan@notebook:~$ ssh-keygen -t ed25519 -C "notebook"
# mentés: ~/.ssh/id_ed25519_nb (+ .pub)
zoltan@notebook:~$ cat ~/.ssh/id_ed25519_nb.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...HAMIS_NB_KULCS...q7T notebook
~ $ pkg install openssh # ha még nincs
~ $ ssh-keygen -t ed25519 -C "telefon-termux"
~ $ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...HAMIS_TEL_KULCS...m2R telefon-termux
iPhone-on ugyanez a Termius vagy Blink Shell appban megy, azok is tudnak kulcsot generálni és a .pub-ot megmutatni.
1Create → Droplets. Válassz régiót (pl. Frankfurt), image-et (pl. Ubuntu 24.04 LTS), méretet.
2Authentication → SSH Key. Itt a kulcsos utat választod (nem a jelszavasat). Kattints „Add SSH Key”, és illeszd be az otthoni-pc .pub tartalmát, névnek add: otthoni-pc. Ugyanígy hozzáadhatod mindjárt a notebookot és a telefont is — amelyiket bepipálod, az bekerül az új szerver root authorized_keys fájljába.
3Hostname: tzlab-szerver. Majd Create Droplet.
4Fél perc múlva kapsz egy IP-t: a mi példánkban 203.0.113.45.
PS C:\Users\Zoltan> ssh -i C:\Users\Zoltan\.ssh\id_ed25519_pc root@203.0.113.45
The authenticity of host '203.0.113.45' can't be established.
ED25519 key fingerprint is SHA256:HOSTkulcs...HAMIS.
Are you sure you want to continue connecting (yes/no)? yes # a szerver bemutatkozik → known_hosts-ba kerül
root@tzlab-szerver:~# # bent vagy
Ez a SHA256:HOSTkulcs… a szerver host-ujjlenyomata (nem a tiéd). Csak első alkalommal kérdez rá.
root@tzlab-szerver:~# passwd
New password: ********
Retype new password: ********
passwd: password updated successfully
Ez a jelszó a DO recovery/web konzolján hasznos, ha egyszer az SSH nem menne — a „break-glass” mentőöv. Az SSH-n magán ettől még marad a kulcsos belépés.
Jó szokás: a napi munkát egy sima, sudo-jogú felhasználóval végzed, nem rootként. Rootként lépj be egyszer, hozd létre a usert, tedd át a kulcsod, majd a jövőben már vele lépsz be.
root@tzlab-szerver:~# adduser zoltan
New password: ******** # ez lesz a zoltan user jelszava (sudóhoz kérheti)
root@tzlab-szerver:~# usermod -aG sudo zoltan # sudo-jog megadása
# a root már bevitt kulcsát (otthoni-pc) másoljuk át a zoltan userhez:
root@tzlab-szerver:~# rsync --archive --chown=zoltan:zoltan ~/.ssh /home/zoltan
# jogosultságok (fontos, különben az SSH nem fogadja el):
root@tzlab-szerver:~# chmod 700 /home/zoltan/.ssh
root@tzlab-szerver:~# chmod 600 /home/zoltan/.ssh/authorized_keys
Mostantól így lépsz be a PC-dről:
PS C:\Users\Zoltan> ssh -i C:\Users\Zoltan\.ssh\id_ed25519_pc zoltan@203.0.113.45
zoltan@tzlab-szerver:~$
Itt már a meglévő szerverhez adsz hozzá kulcsokat — a Droplet létrehozása után. Két mód van.
ssh-copy-id (Linux/Mac/Termux)A notebookról, ahol van már saját kulcs, egyetlen paranccsal feltöltöd a .pub-ot a szerverre (bejelentkezel hozzá az addigi módon — pl. a PC-kulcs itt nincs, úgyhogy a zoltan jelszavával, ha a jelszavas belépés épp engedélyezett, vagy egy már bent lévő gépről):
zoltan@notebook:~$ ssh-copy-id -i ~/.ssh/id_ed25519_nb.pub zoltan@203.0.113.45
# hozzáfűzi a notebook .pub-ját a szerver ~/.ssh/authorized_keys fájljához
authorized_keys-beEgy már bent lévő eszközről (pl. a PC-ről) szerkeszted a fájlt, és új sorként beilleszted a telefon .pub-ját:
zoltan@tzlab-szerver:~$ nano ~/.ssh/authorized_keys
# a fájl így néz ki — soronként egy eszköz, a végén beszédes comment:
ssh-ed25519 AAAAC3...HAMIS_PC_KULCS...9Xk otthoni-pc
ssh-ed25519 AAAAC3...HAMIS_NB_KULCS...q7T notebook
ssh-ed25519 AAAAC3...HAMIS_TEL_KULCS...m2R telefon-termux
telefon-termux sort törlöd — a PC és a notebook érintetlen marad. Ez a „külön kulcs eszközönként” előnye a gyakorlatban.A szerver egyszerre is engedhet jelszavas ÉS kulcsos belépést — vagy csak az egyiket. Ezt az SSH-szerver konfigja dönti el. Ubuntu 24.04-en a beállítások jellemzően a /etc/ssh/sshd_config.d/ mappa „drop-in” fájljaiban vannak, és ezek felülírják a fő /etc/ssh/sshd_config-ot.
/etc/ssh/sshd_config.d/50-cloud-init.conf, benne PasswordAuthentication no. Hiába írod át a fő configot, ez a drop-in nyer. Ezért a beállítást itt, a drop-inban (vagy egy saját, később betöltődő fájlban) állítsd.zoltan@tzlab-szerver:~$ sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication yes # yes = jelszó IS mehet; no = csak kulcs
PubkeyAuthentication yes # a kulcsos belépés maradjon mindig bekapcsolva
Mentés után előbb teszt, aztán újraindítás (és emlékezz a 0. pont aranyszabályára — legyen nyitva egy másik ablak):
zoltan@tzlab-szerver:~$ sudo sshd -t # szintaxis-ellenőrzés
zoltan@tzlab-szerver:~$ sudo systemctl restart ssh
# ha az „ssh” nevet nem ismeri: próbáld a sudo systemctl restart ssh.socket vagy sshd változatot
| Cél | PasswordAuthentication | PubkeyAuthentication | Eredmény |
|---|---|---|---|
| Csak kulcs (legbiztonságosabb) | no | yes | Jelszóval senki, csak kulccsal |
| Mindkettő (átmeneti, kényelmes) | yes | yes | Kulcs vagy jelszó is jó |
| Csak jelszó (nem ajánlott) | yes | no | Kulcs nem számít |
yes/yes), amíg minden eszközöd kulcsát fel nem vetted és le nem tesztelted. Amint biztos, hogy minden eszközről megy a kulcsos belépés, visszaváltasz PasswordAuthentication no-ra — így a robotok jelszó-próbálgatása kizárt. Bármikor visszakapcsolhatod, ha kell.Az elv ugyanaz, csak a Windows-eszköz más, és a kulcs formátuma más: PuTTY a saját .ppk formátumát használja.
1PuTTYgen: vagy generálsz új kulcsot (Generate → egérmozgatás → Save private key = .ppk), vagy a meglévő OpenSSH-kulcsod importálod (Conversions → Import key → betölti az id_ed25519_pc-t → Save private key .ppk-ként). A felül megjelenő „Public key for pasting…” mezőt teszed a szerver authorized_keys-ébe.
2PuTTY: Session → Host Name: zoltan@203.0.113.45. Bal oldalt Connection → SSH → Auth → Credentials → Private key file: tallózd be a .ppk-t.
3Mentés: vissza a Session lapra, adj nevet (tzlab-szerver) → Save. Legközelebb dupla katt és bent vagy.
4Pageant (a PuTTY „agentje”): betöltöd bele a .ppk-t egyszer a passphrase-zel, és utána nem kérdez rá minden belépésnél.
.ppk, vagy OpenSSH-formátum — a kettőt ne keverd, de bármikor átalakíthatók. A nyilvános kulcs mindkét világban ugyanaz a tartalom, csak a formázása tér el.A Claude Code magán a szerveren fut; te bármelyik eszközről SSH-val belépsz, és ott indítod. Telepítés (2026-os, ajánlott natív telepítő — nem kell hozzá Node.js):
zoltan@tzlab-szerver:~$ curl -fsSL https://claude.ai/install.sh | bash
# alternatíva, ha npm-es utat szeretnél (Node.js 22+ kell hozzá):
zoltan@tzlab-szerver:~$ npm install -g @anthropic-ai/claude-code@latest
# ellenőrzés:
zoltan@tzlab-szerver:~$ claude --version
zoltan@tzlab-szerver:~$ claude doctor # környezet-diagnosztika
Első indítás és bejelentkezés:
zoltan@tzlab-szerver:~$ claude
# megnyílik egy bejelentkezési folyamat: ad egy URL-t,
# amit a saját böngésződben (telefon/laptop) megnyitsz, belépsz az Anthropic-fiókoddal,
# és ha kód kell, azt a terminálba illeszted vissza.
Két szint van, ne keverd őket:
Bármelyik eszközről (PC PowerShell / PuTTY, notebook terminál, telefon Termux) belépsz a szerverre, és ott futtatod a claude-ot. A munkád (fájlok, repo, git) a szerveren van, tehát bármelyik eszközről ugyanazt a projektet látod. Ez a legegyszerűbb, és semmi extra nem kell hozzá a fenti SSH-n túl.
~ $ ssh zoltan@203.0.113.45 # telefonról (Termux)
zoltan@tzlab-szerver:~$ claude # és onnantól ugyanaz, mint a gépeden
Ha nem külön claude-ot akarsz eszközönként, hanem a szerveren futó session-t szeretnéd telefonról+gépről is megfogni/követni, ahhoz a Claude Code Remote connectort kell bekötni. Ez egy interaktív, böngészős OAuth-lépés a szerver terminálján:
zoltan@tzlab-szerver:~$ claude
# a session-ben:
/mcp
# → nyílbillentyűkkel válaszd a Claude_Code_Remote szervert → Authenticate
# → a kapott URL-t megnyitod a böngésződben, jóváhagyod, majd:
/mcp
# elvárt: Claude_Code_Remote — connected
Tegyük fel, egy külsős kolléga (telepito) fél napra kell, hogy felrakjon valamit. Három tiszta megoldás, a legjobbtól lefelé.
A vendég küld egy .pub-ot, te beteszed az authorized_keys-be, de korlátozásokkal: lejárat + honnan léphet be. Az OpenSSH ezt a sor elején lévő „opciókkal” tudja:
# ~/.ssh/authorized_keys — egyetlen sor, a kulcs ELÉ írt opciókkal:
restrict,expiry-time="20260815",from="198.51.100.0/24" ssh-ed25519 AAAA...VENDEG_KULCS... telepito-alkalmi
expiry-time="20260815" — e dátum után a kulcs automatikusan érvénytelen (formátum: ÉÉÉÉHHNN, vagy percre: ÉÉÉÉHHNNóópp).from="198.51.100.0/24" — csak erről az IP-tartományról fogadja el.restrict — mindent letilt (port-forward, agent, X11, tty), a legszűkebb alap; ha kell shell, told hozzá: restrict,pty.Takarítás a munka után: egyszerűen töröld azt az egy sort — kész, a vendég nem tud többé belépni. (A lejárat amúgy magától is elvágja.)
Ha a vendégnek nincs kulcsa és jelszóval kell beengedni, csinálj neki külön, lejáró usert — soha ne a sajátodat add oda:
zoltan@tzlab-szerver:~$ sudo adduser telepito
# számla lejárati dátuma (utána egyáltalán nem tud belépni):
zoltan@tzlab-szerver:~$ sudo chage -E 2026-08-15 telepito
# egyszer használatos jelszó: első belépéskor KÖTELEZŐ cserélni:
zoltan@tzlab-szerver:~$ sudo passwd -e telepito
# ha jelszavas belépés kell, ideiglenesen engedélyezd (6. pont), és utána vissza no-ra
Ha jobban körbe akarod zárni, csak ennek az egy usernek engedd a jelszót (a többinek marad a kulcs-only), a config drop-inban:
Match User telepito
PasswordAuthentication yes
Takarítás a végén:
zoltan@tzlab-szerver:~$ sudo deluser --remove-home telepito
Ha csak percekre kell és mellette ülsz: engedélyezed a jelszót, a vendég belép, elvégzi, majd azonnal visszaállítasz kulcs-only-ra és törlöd a fiókot. Kis felület, rövid ablak.
Ez másról szól, mint a belépés: itt már bent vagy a szerveren, és arról van szó, hogy egy-egy sudo parancsnál kérjen-e jelszót. Alapból a sudo a felhasználó jelszavát kéri. Ezt lehet kikapcsolni — óvatosan.
visudo-val szerkeszdA visudo mentés előtt ellenőrzi a szintaxist. Egy elrontott sudoers-fájl kizárhat a rendszergazdai jogokból. Soha ne sima szövegszerkesztővel nyúlj hozzá.zoltan@tzlab-szerver:~$ sudo visudo -f /etc/sudoers.d/zoltan
zoltan ALL=(ALL) NOPASSWD:ALL # zoltan bármit sudózhat jelszó nélkül
Ez azért kényelmes automatizált/CI-jellegű munkához (pl. a szerveren futó Claude Code parancsainál nem akad meg jelszókérdésen), de cserébe aki a session-ödhöz hozzáfér, az rootot is elér. Mérlegelés kérdése.
Csak konkrét parancsokra add meg — pl. egy telepítő usernek csak a csomagkezelést, semmi mást:
zoltan@tzlab-szerver:~$ sudo visudo -f /etc/sudoers.d/telepito
telepito ALL=(ALL) NOPASSWD:/usr/bin/apt-get,/usr/bin/systemctl restart myapp
Így a telepito jelszó nélkül futtathatja pont ezt a két dolgot, de rootshellt nem kap. Ez a „csak amennyi kell” elv a gyakorlatban.
NOPASSWD:ALL csak a saját, jól védett adminfiókodnak, ott is megfontoltan. Vendégnek/automatizmusnak mindig parancsra szűkített NOPASSWD-t adj, és utána vond vissza a fájl törlésével (sudo rm /etc/sudoers.d/telepito).otthoni-pc, notebook, telefon-termux).zoltan), nem rootként.PasswordAuthentication no.sudo sshd -t./etc/ssh/sshd_config.d/) nézed, nem csak a fő configot.NOPASSWD csak indokoltan, lehetőleg parancsra szűkítve, visudo-val.claude.A gyakorlati teszt külön oldalra került: → Teszt 2 — Gyakorlat (15 kérdés). Ott azonnali visszajelzést, magyarázatot és a hibázott kérdésekhez szakasz-ajánlást kapsz.