Modul 2 · 2.3
Az SSH okos használata
Modul 2: SSH és kulcsok · Olvasási idő: 10 perc
Tanulási cél: A lecke után Ön a mindennapokban kényelmesen használja az SSH-t egy saját konfigurációs fájllal, fájlokat másol scp és rsync segítségével, és egy alagúton keresztül eléri az adatbázist anélkül, hogy az adatbázisportot meg kellene nyitnia az internet felé.
Kulcsfogalmak: ~/.ssh/config, Host, HostName, User, IdentityFile, scp, rsync, sftp, port forwarding (porttovábbítás), -L, alagút, ProxyJump, ServerAliveInterval, másik portszám, kulcs visszavonása
Kevesebb gépelés a ~/.ssh/config segítségével
Néhány hét után ezt naponta több tucatszor begépeli:
anna@laptop:~$ ssh -i ~/.ssh/id_ed25519 anna@192.0.2.10Egy kliensoldali konfigurációs fájllal ez rövidebb lesz, és kevesebbet hibázik. A fájl az Ön saját számítógépén található: ~/.ssh/config (Windows esetén: C:\Users\anna\.ssh\config, kiterjesztés nélkül).
Host web1
HostName 192.0.2.10
User anna
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
Host test
HostName test.example.com
User anna
Port 2222Ezután egyszerűen ennyi:
anna@laptop:~$ ssh web1
anna@web1:~$Mit csinálnak az egyes sorok?
- A Host az Ön által választott becenév. Ezt írja a
ssh, ascpés arsyncután. - A HostName a valódi cím: egy IP-cím vagy egy név, amely szerepel a DNS-ben.
- A User és a Port a felhasználónév és a port, így ezeket már nem kell fejben tartania.
- Az IdentityFile megadja a kulcsot. Hasznos, ha több kulcsa van; e sor nélkül az ssh az alapértelmezett kulcsait próbálja ki.
- A ServerAliveInterval 60 60 másodpercenként egy apró életjelet küld. Sok otthoni router és wifihálózat néhány perc után megszakítja a csendes kapcsolatot; így a munkamenete nyitva marad.
Itt is az első érték számít, ugyanúgy, mint a szerveren. Az általános szabályokat, például a Host * blokkot, ezért a fájl aljára tegye.
Fájlok másolása: scp, rsync és sftp
Az scp egy fájlt másol, ugyanabban a formában, mint a cp, csak host: elé írva:
anna@laptop:~$ scp backup.sql web1:/home/anna/
anna@laptop:~$ scp web1:/var/log/nginx/error.log .Az rsync okosabb mappák és nagy adatmennyiség esetén: csak azt küldi át, ami megváltozott, és egy megszakadt másolást folytatni tud. Mindkét oldalon telepítve kell lennie (apt install rsync).
anna@laptop:~$ rsync -avz --progress ./site/ web1:/var/www/example.com/Figyeljen a ./site/ utáni perjelre: perjellel az rsync a mappa tartalmát másolja, perjel nélkül magát a mappát (ekkor /var/www/example.com/site/ lesz az eredmény). Kétség esetén először próbálja ki a --dry-run kapcsolóval, és legyen nagyon óvatos a --delete kapcsolóval, amely a fogadó oldalon mindent töröl, ami Önnél nem létezik.
Az sftp és az olyan grafikus programok, mint a FileZilla vagy a WinSCP, ugyanazt az SSH-kapcsolatot és ugyanazt a kulcsot használják. Külön FTP-szerverre tehát nincs szükség. Régimódi FTP-szervert VPS-en nem ajánlunk: a hagyományos FTP titkosítatlanul küldi át a jelszavát a hálózaton.
Alagút nyitott port helyett
Talán ez az SSH leghasznosabb képessége. Tegyük fel, hogy a szerverén egy PostgreSQL-adatbázis fut, és a laptopjáról egy grafikus programmal szeretné elérni. Nagy a kísértés, hogy megnyissa az 5432-es portot az internet felé. Ne tegye: a nyitott adatbázisportok az adatvédelmi incidensek egyik leggyakoribb okai (10.2. lecke), és a tanfolyam később kívülről ellenőrzi, hogy zárva vannak-e (Z5.1. feladat).
A helyi porttovábbítással (local port forwarding) az SSH alagutat hoz létre:
anna@laptop:~$ ssh -L 5432:127.0.0.1:5432 web1Ezt így olvassa: „figyelj a laptopomon az 5432-es porton, és mindent, ami oda beérkezik, küldj át az SSH-kapcsolaton a 127.0.0.1:5432 címre, a szerver szemszögéből nézve”. Amíg ez a munkamenet nyitva van, az adatbázisprogramját a saját laptopján a localhost cím 5432-es portjához csatlakoztatja, és a szerveren lévő adatbázishoz jut el.
Miért olyan jó ez?
- Az adatbázis a szerveren csak a
127.0.0.1címen figyel, és kívülről elérhetetlen. - A kapcsolatot az SSH titkosítja, akkor is, ha maga az adatbázis nem használ titkosítást.
- Csak az fér hozzá, aki SSH-n be tud jelentkezni. Vagyis a már meglévő erős védelmét használja.
Ha a laptopján már fut valami az 5432-es porton, válasszon bal oldalon egy másik számot: -L 15432:127.0.0.1:5432, és csatlakozzon a 15432-es portra. Ha az alagutat a ~/.ssh/config fájlba írja, mindig kéznél lesz:
Host web1-db
HostName 192.0.2.10
User anna
LocalForward 15432 127.0.0.1:5432A ssh -N web1-db kapcsolóval csak az alagutat kapja meg, parancssor nélkül.
Egy köztes szerveren át: ProxyJump
Előfordul, hogy egy szervert csak egy másikon keresztül lehet elérni, például egy nyilvános IP-cím nélküli adatbázisszervert a webszervere mögött. A ProxyJump az első szerveren keresztül továbbugrik a másodikra:
Host db1
HostName 10.0.0.5
User anna
ProxyJump web1A különbség az agent forwardinghoz képest (2.1. lecke): ProxyJump esetén a titkosítás végig a laptopja és a db1 között zajlik. A köztes szerver csak továbbítja a csomagokat, és nem tudja használni az Ön kulcsát.
Másik portszám: igen vagy nem?
Sok útmutató azt javasolja, hogy az SSH-t tegye át egy másik portra, például a 2222-esre. Mit ér ez valójában?
- Csökkenti a zajt: a legtöbb automatizált jelszótalálgatás csak a 22-es portot próbálja. A naplója nyugodtabb lesz.
- Nem jelent védelmet. Egy szkenner, amely minden portot végignéz, a verziós bannere alapján másodperceken belül megtalálja az SSH-t.
Kulcsokkal és kikapcsolt jelszavas bejelentkezéssel (2.2. lecke) a port a biztonság szempontjából alig számít. Ha mégis váltani szeretne, tegye a helyes sorrendben: nyissa meg az új portot a tűzfalon, az SSH figyeljen mindkét porton, teszteljen egy második ablakban, és csak ezután zárja be a régi portot. Ubuntu 24.04 és újabb esetén ehhez a systemctl daemon-reload és a systemctl restart ssh.socket is hozzátartozik (2.2. lecke). Ne feledje, hogy a szolgáltatójának is lehet tűzfala.
Hozzáférés visszavonása
Egy volt kollégának vagy egy webfejlesztőnek kulcsa volt a szerverén, és már nem dolgozik Önnek? A hozzáférés visszavonása egyszerű, ha nyilvántartja:
- Nézze meg az összes kulcsot:
ssh-keygen -lf ~/.ssh/authorized_keys, és ezt tegye meg minden felhasználónál (a/root/.ssh/authorized_keysesetében is). - Törölje az illető sorát.
- Ha saját felhasználói fiókot használt, zárolja azt (3.1. lecke), és nézze meg, hogy tagja volt-e a
sudocsoportnak (3.2. lecke). - Ha látott jelszavakat, például egy adatbázisjelszót egy konfigurációs fájlban, azokat is cserélje le.
Egy hagyományos kulcsnak nincs lejárati dátuma. Amit nem töröl, az továbbra is működik, akár évekkel később is. Ha valakinek ideiglenes hozzáférést ad, a authorized_keys fájlban a sora elé beírhatja a expiry-time="20261231" opciót; e dátum után a szerver elutasítja a kulcsot.
Összefoglalás
- A saját számítógépén lévő
~/.ssh/configszerverenként tárolja a nevet, a felhasználót, a portot és a kulcsot; aHost *az aljára kerül. - scp az egyes fájlokhoz, rsync a mappákhoz (figyeljen a perjelre és a
--deletekapcsolóra), FTP helyett sftp. - A
ssh -Lsegítségével titkosított alagúton éri el az adatbázist, miközben az adatbázisport kívülről zárva marad. - A ProxyJump biztonságosan ugrik át egy köztes szerveren; jobb, mint az agent forwarding.
- Egy másik portszám csökkenti a zajt, de nem véd. A nem törölt kulcsok továbbra is működnek.
Kvíz
Feladat
O2.3. feladat: SSH-konfiguráció és egy alagút. Hozzon létre a saját számítógépén egy ~/.ssh/config fájlt egy becenévvel a szerveréhez, jelentkezzen be csak a ssh <bijnaam> paranccsal, másoljon át egy fájlt scp vagy rsync segítségével, és hozzon létre egy alagutat -L kapcsolóval egy olyan szolgáltatáshoz, amely a szerverén csak a 127.0.0.1 címen figyel (ha még nincs adatbázisa, használja magának a szervernek a 22-es portját: ssh -L 2200:127.0.0.1:22 <bijnaam>, majd ssh -p 2200 anna@localhost). Válaszoljon a kérdésekre arról, hogy mit csinál az alagút, és miért nem kell megnyitni a portot.
O2.3. feladat: SSH-konfiguráció és egy alagút
Ezt a feladatot saját maga végzi el, senki nem ellenőrzi. Pipálja ki, amit elvégzett, és jelölje meg a feladatot elvégzettként.
A laptopja a bal oldali porton figyel, a forgalom titkosítva halad át az SSH-n, és a szerveren a 127.0.0.1:<poort> címen jön ki. A szolgáltatás kívülről továbbra is elérhetetlen marad. Egy másik SSH-port kevesebb zajt okoz a naplóban, de nem védelem; a kulcsok és a jelszavas bejelentkezés kikapcsolása viszont az.
A pipái és jegyzetei csak ebben a böngészőben maradnak meg, sehova nem küldjük el őket. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy elvégezte a feladatot.
További olvasnivaló
Az alábbi cikkekben leírt lépések a WebOké VPS-eire és paneljeire vonatkoznak; más szolgáltatóknál hasonlóan működik.
- Bejelentkezés a VPS-re SSH-val (és SSH-kulcs létrehozása)
- Az ssh_config kézikönyve (kliensbeállítások): https://man.openbsd.org/ssh_config
- Az ssh kézikönyve (
-L,-J,-Nopciók): https://man.openbsd.org/ssh - SSH-hozzáférés visszavonása a VPS-éhez volt munkatárs vagy elveszett laptop esetén
- VPS: az első bejelentkezéstől a biztonságos szerverig 2.4: SSH-konfiguráció: bejelentkezés rövid névvel
