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.
(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.
[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.
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
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.
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).