SSH bejelentkezés jelszó nélkül

Az SSH egy remek technológia, azonban ha napi szinten kell hozzányúlnunk egy Linux szerverhez SSH kapcsolaton keresztül, akkor egy idő után unalmas lehet az állandó jelszó beírás. A mai írásból kiderül, hogy hogyan lehet automatizálni az SSH bejelentkezést.

A technológia alapja a kétkulcsos titkosítás. A kétkulcsos rendszerek lényege, hogy van egy privát és egy publikus kulcsunk, amelyek összefüggenek, de csak az egyik ismeretében nem lehet hozzáférni a tárolt adathoz. A publikus kulcs onnan kapta a nevét, hogy ezzel titkosunk, ezt szabadon lehet megosztogatni, mozgatni.

A privát kulcsot kell titokban tartani, mivel ez kell a titkosítás visszafejtéshez.

Szoftver ügyileg szükségünk lesz egy SSH kliensre. Windows alatt sokan a PuTTY programot használják, én személy szerint a KiTTY-t használom, ami a PuTTY erősen továbbfejlesztett változata.

Továbbá szükségünk lesz a kulcsgeneráláshoz a PuTTYgen és Pageant programokra, amelyek a PuTTY hivatalos oldaláról szerezhetőek be. A programok nem igényelnek különösebb telepítést, csak futtatni kell őket.

Kulcs generálás

A kulcs generálásáshoz futtassuk a letöltött PuTTYgen programot. A program használata igen kézenfekvő.  Kulcs típusnak az SSH2-RSA opciót kell választani. Az alapértelmezett kulcs hossz 2048 bit, ezt, ha biztonság mániásak vagyunk, akkor növelhetjük 4096 bitre, ha pedig tényleg paranoiásak vagyunk, akkor 8192 bitre. A Generate gombra kattintva megindul a kulcs generálás. Ehhez először némi egér mozgás kell, mivel ebből generálja a kulcs alapját a program. Minél vadabbul és gyorsabban mozgatjuk, annál jobb lesz a kulcs minősége.

keygen_02

A generálás végeztével lehetőségünk van megadni a kulcs leírását. Ha több kulcsot hozunk létre, vagy több szervert adminisztrálunk, akkor érdemes értelmes leírást megadni.  A Key passphrase egy extra védelmi vonal. Csak akkor lehet a kulcs segítségével bejelentkezni, ha megadjuk a hozzá tartozó jelszót. Értelemszerűen extra biztonsági okból ez ne legyen azonos a szerveren használt bejelentkező jelszóval. Ahhoz, hogy a kulcshoz tartozó jelszót ne kelljen minden bejelentkezéskor beírni, a Pageant programot fogjuk használni.keygen_03

A generálás után a folyamat befejezéséhez külön el kell menteni a publikus és privát kulcsot. A publikus kulcsnak adjunk .txt kiterjesztést.

A szerver beállítása

A Linux szerver beállítása nem bonyolult. Fel kell telepíteni az SSH szervert. Ezt Debian alapú rendszereken a következőképpen tehetjük meg:

sudo apt-get install ssh

Ezután a szerverünkre WinSCP vagy más módszerrel át kell juttatni a publikus kulcsot. A publikus kulcs kiadása után a következő parancsokat adjuk ki, feltételezve, hogy a publikus_kulcs.txt fájl tartalmazza a publikus kulcsunkat és az aktuális mappában megtalálható:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -i -f publikus_kulcs.txt > ~/.ssh/authorized_keys

A létrejött authorized_keys fájl egy sort tartalmaz, benne a publikus kulcsunkkal a megfelelő formátumban, már csak felhasználót kell hozzárendelni. Ezt úgy tudjuk megtenni, hogy valamilyen szerkesztővel (pl. nano parancssorból) megnyitjuk a fájlt, majd a kulcs után egy szóközt beiktatva megadjuk a felhasználónevet és a gép nevét az alábbi formátumban:

felhasznalo_neve@gep_neve

A fájl mentése után be kell állítani a megfelelő jogosultságokat:

chmod 600~/.ssh/authorized_keys
chown $USER:$USER ~/.ssh -R

Ezután már csak engedélyezni kell az SSH konfigurációban a kulcsok használatát. Ehhez rendszergazdaként meg kell nyitni szerkesztésre a /etc/ssh/sshd_config fájlt, majd megkeresni azt a sort, ami így kezdődik: #AuthorizedKeysFile %h/.ssh/authorized_keys.

Ezen sor elől el kell távolítani a kettős keresztet, majd menteni kell a fájlt, és újraindítani az SSH szolgáltatást:

sudo /etc/init.d/ssh restart

vagy

sudo service ssh restart

Bejelentkezés

Ezután nem maradt más dolgunk, mint bejelentkezni. Indítsuk el a pageant.exe programot. Az óra melletti új ikonra kattintsunk, majd az Add Key gombra kattintva töltsük be a privát kulcsot és adjuk meg hozzá a jelszót. Ezután következhet a KiTTY vagy a PuTTY beállítása.

pageant

A programot elindítva első utunk a Connection/Data fül alá vezessen. Az Auto-login username szekcióban adjuk meg a felhasználónevünket.

kitty_userEzután a kulcsot kell betölteni. Ezt a Connection/SSH/Auth lapon tudjuk megtenni, méghozzá a Private key file for atuhentication mezőben.

kitty_keyEzután már csak a szerver címet kell megadni az első lapon és opcionálisan mentsük a munkamenetet, ha nem szeretnénk minden alkalommal eljátszani a konfigurációt.

Ha mindent jól csináltunk, akkor be kellene jelentkeznie a kliensnek jelszó nélkül. Ha nem sikerül, akkor valamit elrontottunk. Például nem jól másoltuk át a privát kulcsot, vagy bármi. Hibát keresni a legegyszerűbb úgy, ha az SSH konfigban a LogLevel sor értékét INFO-ról megváltoztatjuk DEBUG3-ra, újraindítjuk a szervert, majd egy sikertelen bejelentkezés után a /var/log/auth.log tartalmát átnézzük.

Kiemelt kép forrása: http://www.cmivxx.com/wp-content/uploads/2015/07/ssh.png