Tartalomjegyzék

  1. Az SSH kulcsokról röviden
  2. Első lépés: készítsünk egy RSA kulcspárt
  3. Második lépés: tároljuk a kulcsokat és a kifejezést
  4. Harmadik lépés: másoljuk ki a nyilvános kulcsot
  5. Opcionális negyedik lépés: jelszavak letiltása a gyökérbejelentkezésekhez

Az SSH kulcsokról röviden

Az SSH kulcsok egy jóval biztonságosabb módját nyújtják a VPS-re (Virtuális privát szerver) való bejelentkezésnek, mint az egyszerű jelszóval történő belépés. Miközben a jelszavakat nyers erőn alapuló támadással egy idő után fel lehet törni, az SSH kulcsokat majdhogynem lehetetlen önmagában ezzel az egy módszerrel feltörni.

Egy kulcspár generálásával létrehozunk két hosszú karakterláncot: egy nyilvános és egy magánkulcsot. A nyilvános kulcsot elhelyezhetjük bármely szerveren, és azt csak egy olyan felhasználó oldhatja fel, aki rendelkezik a megfelelő magánkulccsal. Amikor a kettő illeszkedik egymásba, akkor a rendszer kinyílik anélkül, hogy jelszóra lenne szükségünk.

Még jobban növelhetjük a biztonságot, ha a magánkulcsot egy kifejezés is levédjük.

Első lépés: készítsünk egy RSA kulcspárt

Első lépésként készítenünk kell egy kulcspárt az ügyfél gépén (jó eséllyel ez a saját számítógépünk lesz).

ssh-keygen -t rsa

Második lépés: tároljuk a kulcsokat és a kifejezést

Miután beírtuk a Gen Key (kulcs létrehozása) parancsot, kapni fogunk még néhány kérdést.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Itt nyomhatunk egy entert, amellyel a példában a „demo” felhasználóhoz mentjük le a fájlt.

Enter passphrase (empty for no passphrase):

Tőlünk függ, hogy szeretnénk-e kifejezést is használni. A kifejezésnek is megvannak az előnyei: a kulcs bebiztosítása (a titkosítás mértékétől függetlenül), hiszen így mások számára láthatatlan. Amennyiben egy kifejezéssel védett magánkulcs illetéktelen kezekbe kerül, úgy képtelenek lesznek a hozzá tartozó felhasználói fiókokba bejelentkezni addig, ameddig a kifejezést fel nem törik. Ezzel a támadás alatt álló személy nyerhet egy kis extra időt.

Az egyetlen hátránya a jelmondatnak (magától értetődően) az, hogy minden egyes alkalommal be kell gépelnünk, amikor a kulcspárt használjuk.

A teljes kulcs létrehozási folyamat a következőképpen néz ki:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+ 

Így a nyilvános kulcsunk a példa alapján a /home/demo/.ssh/id_rsa.pub helyen lett tárolva.

A magánkulcs (azonosító) pedig a /home/demo/.ssh/id_rsa mappába lett lementve.

Harmadik lépés: másoljuk ki a nyilvános kulcsot

Amennyiben létrehoztuk a kulcspárt, akkor el kell helyeznünk azt a használni kívánt virtuális szerveren.

Bemásolhatjuk a nyilvános kulcsot az új gép authorized_keys fájljába az ssh-copy-id paranccsal. Fontos, hogy az alábbi parancs csak egy példa, a felhasználónevet és az IP címet ki kell cserélnünk.

ssh-copy-id user@123.45.56.78

Egy másik megoldás: bemásolhatjuk a kulcsokat SSH-t használva is:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Attól függetlenül, hogy melyik parancsot alkalmaztuk, ehhez hasonló szövegnek kell megjelennie a képernyőnkön:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting. 

Ezt követően beléphetünk a példa alapján a user@12.34.56.78 -ba, és a rendszer nem fog tőlünk jelszót kérni.

Amennyiben kifejezést is állítottunk be, úgy azt kérni fogja (illetve minden egyes jövőbeli bejelentkezésnél).

Opcionális negyedik lépés: jelszavak letiltása a gyökérbejelentkezésekhez

Miután bemásoltuk az SSH kulcsokat a szerverünkbe és megbizonyosodtunk róla, hogy be tudunk jelentkezni csupán az SSH kulcsok használatával; lekorlátozhatjuk a gyökérbejelentkezéseket is, hogy azok csak az SSH kulcsokkal legyenek elérthetőek.

Ahhoz, hogy ezt megtegyük, meg kell nyitnunk az SSH config fájlt:

sudo nano /etc/ssh/sshd_config

Ezen a fájlon belül keressük meg azt a sort, amely tartalmazza a PermitRootLogin-t és módosítsuk úgy, hogy a felhasználók csak az SSH kulcsukkal tudjanak belépni.

Alkalmazzuk a változtatásokat:

reload ssh