Saugus SSH prisijungimas be slaptažodžio.

Kas dirba su Linux puikiai žino, kaip svarbu apsaugoti savo paskyrą kai jungiamasi per SSH protokolą prie nutolusio serverio. Dažniausiai yra naudojami slaptažodžiai, tačiau pastarieji gali būti nulaužiami. Todėl nusprendžiau parašyti apie kiek kitokį prisijungimą prie serverio.

Šiame straipsnelyje trumpai aprašysiu kaip prisijungti prie Linux serverio be slaptažodžio naudojantis sugeneruotu raktu. Dėmesio! Visa pateikiama informacija buvo atliekama Linux sistemoje remiantis oficialaus tinklapio ssh.com medžiaga. Čia pateikiama su paprastinta versija. Patariu prieš vykdant veiksmus pirma perskaityti straipsnį iki galo.

Raktų sugeneravimas

Taigi pradedame. Pirmiausia reikia sugeneruoti privatų ir viešąjį raktą. Tai daroma vedant komandą kur ssh-keygen pati komanda, -f ~/.ssh/neo-key nusakoma vieta kur bus patalpinti raktai, bei raktų pavadinimas mano atveju neo-key ir -t ecdsa -b 521 raktų šifravimo algoritmas.

ssh-keygen -f ~/.ssh/neo-key -t ecdsa -b 521

Generatorius paprašys įvesti saugumo frazę Enter passphrase (empty for no passphrase): kurią primygtinai rekomenduoju naudoti. Jei viskas pavyko, tai ekrane turite pamatyti kažką panašaus į tai

Panašiai turi atrodyti sėkmingai įvykdyta komanda.

Komanda ls -l .ssh/ galime patikrinti ar raktai yra vietoje.

ls -l .ssh/

Kaip matome viskas ten, kur ir turi būti.

neoromancer@neotech:~$ ls -l .ssh/
viso 8
-rw------- 1 neoromancer neoromancer 444 gruod  3 13:41 neo-key
-rw-r--r-- 1 neoromancer neoromancer 273 gruod  3 13:41 neo-key.pub

Kaip matome gauname du failus neo-key ir neo-key.pub. Failas neo-key yra privatus raktas, kuris liks gulėti kompiuteryje ,kuriame jį ir sugeneravome, o viešasis raktas neo-key.pub keliaus į nutolusį serverį.

Viešojo rakto patalpinimas į serverį

Kad saugiai perkeltume viešąjį raktą į nutolusį serverį, reikia įvykdyti sekančią komandą:

ssh-copy-id -i ~/.ssh/neo-key.pub vartotojas@ip_adresas 

Į klausimą Are you sure you want to continue connecting (yes/no)? atsakome yes ir paprašius įvesti slaptažodį suvedame serverio prisijungimo slaptažodį. Po sėkmingos operacijos parašoma, kad vienas raktas įtrauktas ir jau galima išbandyti prisijungimą, mano atveju tai bus ssh pi@192.168.1.120

Baigiamieji darbai

Pasibandome sujungimą su serveriu ir jei mūsų neklausia prisijungimo slaptažodžio, tada galime serveryje pakoreguoti sshd_config, kad apskritai nepriimtų prisijungimų su slaptažodžiais. Tam vedame komandą:

sudo nano /etc/ssh/sshd_config

Ir atsiradusiame faile susirandame #PermitRootLogin forced-commands-only ir nuėmę groteles įrašome PermitRootLogin yes. Taip pat įrašome PasswordAuthentication no Failo turinys turėtų atrodyti panašiai taip (ištrauka):

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

Spaudžiame Ctrl+O tada Ctrl+X taip išsaugodami ir išeidami iš redaguojamo failo. Belieka perkrauti patį ssh. Tai padarome įvykdę komandą:

sudo service ssh restart

SSH prisijungimo redagavimas reikalauja atidumo, todėl primygtinai rekomenduoju pasidaryti redaguojamų failų kopijas, kad jei suklydus ir negalint prisijungti būtų galimybė atstatyti konfigūraciją. Būtent PasswordAuthentication no yra atsakingas už slaptažodžio reikalavimą, todėl šį parametrą aktyvuokite įsitikinę, kad viskas tikrai veikia korektiškai.

Viskas, dabar jungiatės tik su viešuoju raktus. Reikia pastebėti, kad ssh galima susiderinti visiškai pagal savo poreikius bet apie tai kada nors vėliau.

Parašykite komentarą