Radionica 1/x – SSH
SSH (Secure Shell) je standardni i najkorišćeniji način osiguranog pristupa drugoj Linuks mašini preko mreže.
Kada imate računar (zvaćemo ga server) kome želite pristupiti sa svog računara, potrebno je na serveru da instalirate (ako već nije instaliran) i pokrenete ssh server. Ovo je obična klijent server arhitektura u kojoj računar na koji želite da se povežete ima SSH server na sebi i sluša na nekom portu (port 22 je uobičajen).
Dakle na serveru je potrebno instalirati i pokrenuti SSH (za Debian distribucije koristite apt-get, a za RHEL yum ):
$ sudo apt-get update
$ sudo apt-get install openssh-server
Pošto SSH servis na serveru treba da bude stalno aktivan, čak i kada se server restartuje, potrebno je SSH servis omogućti da automatski startuje kad god se i server pokrene. To je pogodno u slučaju da namerno ili slučajno restartujete server, i ponovo želite da se povežete na njega.
sudo systemctl sshd enable
Da bi se uverili da server radi bez problema možemo proveriti status našeg SSH servera:
sudo systemctl status ssh
I ako nije pokrenut, pokrenuti ga sa
sudo systemctl start ssh
Nakon čega bi ste trebali videti ovakav ispis:
Povezivanje može biti pomoću šifre ili pomoću ključa, i uvek se preporučuje ovo drugo jer je sigurnije.
Ok, sada je potrebno da na klijentu (našem laptopu ili desktopu sa koga ćemo se povezivati na server preko ssh) kreiramo par kljućeva. Tokom kreiranja ključeva pitaće vas da li želite da zaštitite šifrom svoj tajni ključ. Ovo je preporučljivo za slučaj da ga izgubite jer niko bez te šifre neće moći da ga koristi:
ssh-keygen -b 4096 -t rsa

Ova komanda će kreirati RSA ključ dužine 4096 bita i smestiti ih u
~/.ssh/ folder trenutnog korisnika koji kreira kljućeve i ključevi će se podrazumevano zvati
id_rsa —> tajni ili privatni ključ
id_rsa.pub —> javni ključ
Ključeve takođe možete preimenovati kako želite da vam bude lakše da ih razlikujete, jer je veoma važno da vaš tajni ključ ne sazna niko drugi.
Sada kada smo na desktopu kreirali ključeve potrebno je javni ključ prebaciti na server.
Za ovo postoji komanda koja to automatski radi, smeštajući javni ključ sa vašeg desktopa na server u fajl na serveru u home direktorijumu korisnika
~/.ssh/authorized_keys
ssh-copy-id $HOME/.ssh/id_rsa.pub user@IP_ADDRESS_OF_SERVER
Na slici iznad se vidi da je korisnik “milica” sa svog računara pod imenom “x220” kopirala svoj javni ključ “id_rsa.pub” na server “95.179.214.200” za korisnika petar na serveru. Nakon toga povezala se preko SSH na server samo sa svojim ključem kao korisnik “petar” gde je izlistala javni ključ u fajlu “authorized_keys”.
Iz predhodnog primera izostavljen je korak gde se na serveru kreirao neprivilegovan korisnik pod imenom “petar”. To možete ispratiti u sledećem nastavku koji pokriva oblasti kreiranja korsnika i grupa i fajl permisije.
Generalno je preporučljivo iz sigurnosnih razloga da se na server preko ssh ne povezujete kao “root” korisnik, pa je zato i ovde dat takav primer. Preporuka je da se korisnik na serveru koji se povezuje bude neprivilegovan korisnik (nekad i korisnik koji nije član sudo grupe, pa da se tak nakon povezivanja ulogujete sa šifrom u privilegovanog korisnika).
Sada kada smo na serveru, treba da omogućimo povezivanje samo preko ključeva, da se korisnici koji nemaju svoj ssh ključ na serveru ne mogu povezati.
sudo nano /etc/ssh/sshd_config
i izmeniti sledeće linije da izgledaju ovako:
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
Nakon ovoga na server cete moći da se ulogujete samo sa ljučem i bez šifre, a root korisnik neće nikako moći da se poveže preko SSH
Dodatno, možete sebi olakšati povezivanje pogotovo ako u buduće budete imali više servera na koje se logujete sa različitim korisnicima koji imaju različite SSH ključeve imenovanjem servera i dodavanjem na lokalnom desktop računaru konfiguraciju povezivanja za svaki pojedinačno sa kojim parametrima treba.
To možete uraditi u folderu ~/.ssh/ kreirajući fajl “config”
touch ~/.ssh/config
nano ~/.ssh/config
I ubacivanjem parametara za povezivanje u taj konfig
Kada ovaj fajl sačuvamo na server se možemo povezati samo pomoću imena koji smo mu dali “DemoSSHServer”