Jelszómentes SSH azonosítás hitelesítő kulcs használatával

A PCLinuxOS Magazine márciusi számában jelent meg egy cikk az SSHFS/SFTP használatáról. A cikk magyar fordítása: SSH/SFTP megosztás csatolása helyi meghajtóként

Az eredeti cikk: Mounting SSH/SFTP Shares As Local Drives

A cikkben található egy hivatkozás a jelszómentes SSH azonosítással kapcsolatos régebbi blogra. Ennek fordítását itt közöljük, amihez némi észrevételt is hozzáfűztünk, mert a bejegyzésben taglaltaknál modernebb megoldás is megjelent a fejlesztések során.

Passwordless authentication

(Közreadva: 2011. január 29.)

írta: AndrzejL

Üdv Mindenkinek!

Megbolondulnék, ha mindig és mindenkor emlékeznem kellene az  összes shell bejelentkezésem jelszavára… egy fiókot jelszó nélkül hagyni viszont elfogadhatatlan biztonsági szempontból. Mi a megoldás? Használj hitelesítő kulcsot – publikust és privátot.

Hogyan juthatsz hozzá? Nagyon könnyen.

Nyiss egy terminált a helyi gépeden.

Üsd be a következő parancsot:

ssh-keygen -t rsa

Amikor megkérdezi:

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

[add meg annak a fájlnak a nevét, ahová a kulcsot menteni akarod (/home/mylogin/.ssh/id_rsa) mylogin=felhasználónév]

Nyomj <Enter>-t.

Enter passphrase (empty for no passphrase)

[írd be a jelszót (hagyd üresen, ha ne legyen)]

Nyomj <Enter>-t.

Enter same passphrase again:

[Ismét írd be a jelszót]

Nyomj <Enter>-t.

ssh001

[mylogin@myhostname ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mylogin/.ssh/id_rsa):
Created directory '/home/mylogin/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mylogin/.ssh/id_rsa.
Your public key has been saved in /home/mylogin/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:7b
mylogin@myhostname.local
The key's randomart image is:
+--[ RSA 2048]----+

Véletlenszerű rajzolat
...
...
+-----------------+
[mylogin@myhostname ~]$

Vagyis mit tettél eddig? Létrehoztál egy hitelesítő kulcspárt. Privátot, ami titkos és publikust, amit mindenki láthat.

Ezek a kulcsok a következő két fájlban vannak:

Your identification has been saved in /home/mylogin/.ssh/id_rsa.

[Az azonosító kulcsodat a /home/mylogin/.ssh/id_rsa fájlba mentettem] <<< PRIVÁT KULCS

Your public key has been saved in /home/mylogin/.ssh/id_rsa.pub.

[A nyilvános kulcsodat a /home/mylogin/.ssh/id_rsa.pub fájlba mentettem] <<< NYILVÁNOS KULCS

Futtasd a következő parancsot:

cat /home/mylogin/.ssh/id_rsa.pub

Valami hasonló jelenik meg:

ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCwMplVCQ+Y33n4 ...

(a teljes sort lásd a képernyőképen)

Ezt az egész style=”margin-left: 40px; margin-bottom: 0cm;”sort másold le.

Most létrehoztál egy hitelesítési kulcsot és a publikus részt is lemásoltad – a nyilvános kulcsodat el kell helyezned a távoli gépen. Nem egyszerűen valamilyen fájlba, hanem egy meghatározott fájlba, egy meghatározott mappában, különleges engedélyekkel.

ssh002

Nyiss egy új terminált. Ssh-zz be a távoligép.net-re:

ssh -l belépő_azonosítóm távoligép.net

Hozz létre a saját könyvtáradban egy .ssh mappát:

mkdir ~/.ssh

Állíts be megfelelő engedélyeket:

chmod 700 ~/.ssh

Hozd létre az authorized_keys (meghatalmazotti kulcsok) fájlt. Az újonnan létrehozott mappában ezt a parancsot add ki:

touch ~/.ssh/authorized_keys

Add meg a megfelelő engedélyt:

chmod 600 ~/.ssh/authorized_keys

Az előzőleg lemásolt cat /home/mylogin/.ssh/id_rsa.pub parancs kimenetét illeszd be „echo”-val kombinálva:

echo "" > ~/.ssh/authorized_keys

Például:

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQ ... > ~/.ssh/authorized_keys

Lépj ki a távoli gépről:

exit

Lépj vissza:

ssh -l belépő_azonosítóm távoligép.net

ssh003

A távoli ssh szerver nem fogja megkérdezni a jelszót. Ha mégis – valamit hibáztál, a megjelölteket hibásan olvastad el!

Egy privát kulcsot használhatsz több szerveren is. Mindössze mindegyikre fel kell másolnod a nyilvános kulcsodat, ahogy azt megmutattam. Az engedélyek fontosak: 700 a .ssh mappának és 600 az authorized_keys fájlnak. A hibák 99 %-a a „/” mappa rossz engedélyeire vagy a rossz fájlnévre vezethető vissza.


A cikk egy korábbi blog szó szerinti fordítása. Az azóta eltelt időben az ssh újabb verziói jelentek meg, számos új szolgáltatással kiegészítve. Egyik ilyen, ami lehetővé teszi egyszerű eszközzel a nyilvános kulcsot a szerverre másolni – ha a szerverre a jelszóval való bejelentkezés engedélyezett.

Első lépésként elkészítettem a kulcspárt. Ez a folyamat nem különbözik AndrejzL által leírtaktól.

pwdless2

Ezt követően kiadtam a következő parancsot:

ssh-copy-id -i .ssh/rsa_id.pub janu.hu

Felhívom a figyelmet a következőkre:

  • a másolandó fájl elérési útját, nevét pontosan meg kell adni;

  • ha a távoli gépen ugyanaz a bejelentkezési nevünk, azt külön nem kell megadni. Ha viszont eltérő, akkor használható az AndrejzL által megadott forma (ssh -l mylogin remotemachine.net – esetünkben ssh -l guest janu.hu), vagy az e-mail formára emlékeztető változat: ssh guest@janu.hu. Az eredményben nem lesz különbség.

Az ssh-copy-id használata még további előnyökkel jár:

  • ha a távoli szerveren még nincs ssh mappánk, létrehozza;

  • a jogosultsági engedélyeket maga a program állítja be, nem kell ezzel törődnünk;

  • a publikus kulcsot tartalmazó fájl neve eltérő lehet, amit a kiszolgáló konfigurációs állománya tartalmaz. A program innen veszi az adatot, tehát nem tudjuk elrontani.

Amennyiben a jelszó szerinti bejelentkezés nincs engedélyezve, akkor küldjük el az id_rsa.pub fájlunkat a rendszergazdának, hogy tegye a megfelelő helyre.

Az itt leírtak az általános esetre vonatkoznak. Jelen bejegyzés kereteit meghaladja a nem alapértelmezett porton való kommunikáció, a sftp és scp használatának ismertetése, valamint a jelszóval védett titkos kulcs könnyebb használata (AndrzejL a jelszó nélküli változatot ismertette).

pwdless3

Share
A bejegyzés kategóriája: Magazin, rendszer
Kiemelt szavak: , , , .
Közvetlen link.

Vélemény, hozzászólás?

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .