2009. augusztus 27., csütörtök

Jelszó nélküli belépés - OpenSSH [Debian Lenny] - kiegészítve!

Jelszó nélkül nem annyira ajánlott, de sose lehet tudni, mikor jöhet jól [lásd: lentebb: kulcs+jelszó].

Kliens oldalon: [Ahonnan jelszó nélkül akarsz belépni, "user" helyére [/home/user/stb] írd a felhasználó nevét, vagy ahol értelemszerűen van a home mappája. $USER-t írva az éppen bejelentkezett felhasználó kerül oda automatikusan.]

Generáljuk le a kulcsot, jelszó nélkül:
time ssh-keygen -b 8192 -t rsa -f /home/user/.ssh/id_rsa -P '' -v
Nem muszáj 8192 bites kulcsot létrehozni, elég csak egy 4096 bit-est pl. [de attól kisebbet ne].

A "time" paranccsal lehet megtudni, hogy mennyi ideig tartott a generálás. Legfeljebb 32 768 bit-es kulcs készíthető, de az már valószínűleg lassabb belépéshez, és hosszú generálási időhöz vezet [pár óra? - fixme + de elvileg scp-zést nem lassítaná - fixme2].
8192 bit-es kulcs egy átlag mai gépen ~1 perc alatt generálódik.

Ezzel két fájl jön létre:
  • id_rsa: privát kulcsod, NE add oda senkinek!!!
  • id_rsa.pub: a publikus kulcsod
Most a serveren [ahová be akarsz lépni jelszó nélkül] telepítsd az "openssh-server"-t:
apt-get install openssh-server
Hozzunk létre egy usert, akinek majd megengedjük az SSH-t [a "valaki" az SSHFELHASZNALO a későbbiekben, és ha lehet valami nem kitalálható legyen a neve, én csak egy példa miatt adtam a "valaki"-t]:
useradd -m valaki
Jelszót adjunk neki:
passwd SSHFELHASZNALO
Szerkesszük meg egy kicsit a "/etc/ssh/sshd_config" fájlt Vim-el:
AllowUsers SSHFELHASZNALO
Ezzel beállítjuk, hogy csak az SSHFELHASZNALO léphet be SSH-val. Szóközzel elválasztva írhatunk több felhasználó nevet.
Megfelelő port kiválasztása, hogy nagyon NE az alapértelmezetten menjen az SSH:
Port VALAMI-NEM-ALAP-PORTSZAM
Még négy fontos dolog, ami nem alapértelmezett:
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
PermitRootLogin no
Mivel módosítottuk a config fájlt, indítsuk újra az ssh-t:
/etc/init.d/ssh restart
Vissza a klienshez: másoljuk át az "id_rsa.pub"-ot a serverre:
ssh-copy-id -i /home/user/.ssh/id_rsa.pub '-p PORTSZAM SSHFELHASZNALO@SERVER-IP-CIME'
A "'"-ba tétel a végén fontos, mármint ha nem alapértelmezett port van beállítva.
Kész.
Lépjünk be a kliensről, a serverre, és nem fog jelszót kérni:
ssh SSHFELHASZNALO@SERVER-IP-CIME -p PORTSZAM

Ha kulccsal + jelszóval szeretnél belépni [kiegészítés]

Mivel ez nagyban megnöveli a biztonságot. Jelszó nélküli belépés pl.: scriptelésnél, stb helyzetben lehet jó. Itt viszont annyi a különbség, hogy a kulcs generálásakor nem kell a "-P ''", ekkor jelszót fog kérni:
time ssh-keygen -b 8192 -t rsa -f /home/user/.ssh/id_rsa -v
És amikor szerkeszted a serveren a "/etc/ssh/sshd_config" fájlt, akkor a:
PasswordAuthentication no
-t FONTOS beállítani! Ezek után belépni csak a kulcs + ahhoz tartozó jelszó párossal lehet :)

ui.: Egy forrás
ui2.: Alap user kezelés
ui3.: Talán ide tartozhat: GPG-ről
ui4.: "openssh-server v5.1p1-5"-el próbáltam.
ui5.: Hup.hu link
ui6.: SSH Tips and Tricks
ui7.: SSH kulcsok használata
ui8.: Napi tipp: Ha SSH van, minden van
ui9.: man sshd_config és man ssh_config
ui10.: Későbbi bővítés lesz: bruteforce elleni védelem + port knocking

11 megjegyzés:

  1. üdv!

    Ezt nagyon túlbonyolítottad :-)
    felesleges az mkdir, az ssh-keygen a mappát is létrehozza, "ssh-keygen -b 8192 -t rsa"
    felesleges a másik oldalon a "catolás", az "ssh-copy-id -c ~/.ssh/id.rsa.pub user@host" szintén a kliens oldalról mindent elintéz helyetted...

    VálaszTörlés
  2. de legalább jó tudni, hogy ~mi történik a háttérben :) köszi a hozzászólást :)

    VálaszTörlés
  3. Raadasul ha jol latom jelszo nelkul hozza letre a kulcsot... erosen ellenjavallt.

    VálaszTörlés
  4. lerövidítettem az írást a ssh-copy-id-vel

    VálaszTörlés
  5. kiegészítettem, most már kulcs+jelszó is van benne na :)

    VálaszTörlés
  6. az eleresi utakban a /home/user kicserelheto /home/$USER-re nem?

    VálaszTörlés
  7. a "user" a felhasználó nevére, vagy ahol van a mappája

    "[Ahonnan jelszó nélkül akarsz belépni. User helyére írd a felhasználó nevét.]"

    kiemeltem, mármint hogy jobban látszódjon

    VálaszTörlés
  8. értem, de ha ez lenne a blogbejegyzésben is amit fentebb mondtam akkor nem kellene átirogatni sem, megoldaná a bash magától.

    VálaszTörlés
  9. ok, kiegészítettem :)

    csak ha root-ként adja ki az ember a parancsokat, akkor úgy is hasznos odaírni a megfelelő user-t, de viszont minek a root, igaz, köszi!

    VálaszTörlés
  10. de viszont jut eszembe -f kapcsoló nélkül a parancsot futtató user .ssh mappájába kerülnek a generált kulcsok! :)

    VálaszTörlés
  11. Ne feledjük a csodás
    VisualHostKey yes
    sem :)

    VálaszTörlés