Kako koristiti SSH za upravljanje serverom

Šta je SSH i zašto je vazan
SSH (Secure Shell) je mrežni protokol koji omogućava sigurnu komunikaciju između dva računara preko nesigurne mreže. U kontekstu web hostinga, SSH vam omogućava da se povezete na vaš server i upravljate njime putem komandne linije - instalirate softver, editujete konfiguracione fajlove, restarujete servise, pregledajte logove i obavljate sve administrativne zadatke.
Pre SSH-a, administratori su koristili Telnet protokol koji je slao sve podatke (uključujući lozinke) u necriptovanom obliku. SSH je zamenio Telnet donosenjem enkripcije celokupne komunikacije, što znači da niko ko prisluškuje mrežni saobraćaj ne može videti šta radite na serveru ili ukrasti vaše pristupne podatke.
SSH radi na principu klijent-server arhitekture. Vaš računar (klijent) pokreće SSH klijent program koji se povezuje na SSH server (daemon) koji radi na udaljenom serveru, obično na portu 22. Nakon autentifikacije, dobijate pristup komandnoj liniji servera kao da sedite ispred njega.
SSH klijenti
Da biste se povezali na server preko SSH-a, potreban vam je SSH klijent program na vašem računaru.
Linux i macOS - Terminal
Linux i macOS dolaze sa ugradenim SSH klijentom. Otvorite Terminal aplikaciju i koristite komandu: ssh korisnik@ip-adresa-servera. Na primer: ssh [email protected]. Sistem će vaš pitati za lozinku (ili koristiti SSH ključ ako je konfigurisan). Posle uspešne autentifikacije, videćete komandni prompt servera i možete poceti sa radom.
Windows - PuTTY
PuTTY je najpopularniji besplatni SSH klijent za Windows. Preuzmite ga sa oficijalnog sajta (putty.org) i pokrenite. U polje "Host Name" unesite IP adresu servera, port ostavite na 22, izaberite "SSH" kao tip konekcije i kliknite "Open". Pojavice se terminal prozor sa promptom za korisničko ime i lozinku.
Windows 10/11 - ugradeni SSH
Novije verzije Windows-a (10 i 11) dolaze sa ugradenim OpenSSH klijentom. Otvorite PowerShell ili Command Prompt i koristite istu ssh komandu kao na Linux-u. Ovo je jednostavniji pristup od PuTTY-ja jer ne zahteva instalaciju dodatnog softvera i koristi isti interfejs kao Linux/macOS.
Napredni klijenti
Za korisnike koji svakodnevno rade sa više servera, napredni klijenti poput Termius, MobaXterm ili Royal TSX nude dodatne funkcionalnosti: čuvanje konekcija, SFTP fajl menadžer, tabovi za više sesija, snippet menadžer i integraciju sa cloud platformama.
Osnovna konfiguracija SSH-a
Pravilna konfiguracija SSH konekcija štedite vreme i povećava sigurnost.
SSH config fajl
Na Linux-u i macOS-u, možete kreirati ~/.ssh/config fajl koji čuva podešavanja za vaše servere. Umesto da svaki put kucate punu komandu sa IP adresom, korisničkim imenom i portom, možete definisati aliase. Na primer, možete definisati alias "mojserver" sa Host, HostName (IP adresa), User (korisničko ime), Port i IdentityFile (putanja do SSH ključa). Nakon toga, dovoljno je da kucate ssh mojserver i sve će biti automatski primenjeno.
Promena podrazumevanog porta
SSH podrazumevano koristi port 22. Promena na drugi port (na primer 2222 ili neki drugi nestandardni port) smanjuje broj automatizovanih napada jer većina botova skenira samo port 22. Ovo nije prava bezbednosna mera (security through obscurity) ali efektivno smanjuje "sum" u logovima. Promenite port u /etc/ssh/sshd_config fajlu na serveru.
Autentifikacija SSH ključem
Autentifikacija ključem je sigurnija i praktičnija od korišćenja lozinki. Umesto da pamtite i kucate lozinku svaki put, koristite par kriptografskih ključeva.
Kako radi
SSH ključ par se sastoji od privatnog ključa (koji ostaje na vašem računaru i nikada se ne deli) i javnog ključa (koji se postavlja na server). Kada se povezujete, server šalje izazov koji samo vlasnik privatnog ključa može resiti. Vaš SSH klijent koristi privatni ključ za potpis, server verifikuje potpis javnim ključem i - ako se poklapaju - autentifikacija je uspešna. Lozinka se nikada ne prenosi preko mreže.
Generisanje ključa
Na Linux-u i macOS-u koristite komandu ssh-keygen za generisanje ključa. Preporučujemo Ed25519 algoritam koji je moderan, brz i siguran. Komanda će vaš pitati gde da sačuva ključ (podrazumevano ~/.ssh/id_ed25519) i da li želite passphrase (dodatna lozinka za zaštitu ključa - preporučeno). Kreirace se dva fajla: privatni ključ i javni ključ sa .pub ekstenzijom.
Postavljanje javnog ključa na server
Javni ključ treba kopirati na server u ~/.ssh/authorized_keys fajl korisnika na koji se povezujete. Najlakši način je komanda ssh-copy-id koja automatski kopira vaš javni ključ na server. Alternativno, možete ručno dodati sadržaj .pub fajla u authorized_keys na serveru.
Isključivanje lozinke
Kada potvrdite da SSH ključ radi, preporučljivo je isključiti autentifikaciju lozinkom na serveru editovanjem sshd_config fajla i postavljanjem PasswordAuthentication na no. Ovo dramatično povećava sigurnost jer botovi ne mogu pogađati lozinku - jedini način pristupa je posedovanje privatnog ključa.
Najvažnije SSH komande
Evo komandi koje ćete najčešće koristiti na serveru.
Navigacija i fajlovi
- ls -la: Lista fajlova u direktorijumu sa detaljnim informacijama (permisije, vlasnik, veličina, datum).
- cd /putanja/do/direktorijuma: Promena aktivnog direktorijuma.
- pwd: Prikazuje trenutni direktorijum.
- cat fajl.txt: Prikazuje sadržaj fajla u terminalu.
- nano fajl.txt: Otvara fajl u nano editoru za editovanje. Ctrl+O za čuvanje, Ctrl+X za izlaz.
- cp izvor odredište: Kopira fajl. Dodajte -r za direktorijume.
- mv izvor odredište: Pomera ili preimenuje fajl ili direktorijum.
- rm fajl: Brise fajl. rm -rf direktorijum brise direktorijum sa svim sadržajem (oprez sa ovom komandom!).
- chmod 755 fajl: Menja permisije fajla (755 = vlasnik sve, grupa/ostali čitaju i izvrsavaju).
- chown korisnik:grupa fajl: Menja vlasnistvo fajla.
Sistem i servisi
- top ili htop: Prikazuje aktivne procese i korišćenje resursa (CPU, RAM) u realnom vremenu.
- df -h: Prikazuje korišćenje diska u citljivom formatu.
- free -h: Prikazuje korišćenje memorije (RAM).
- systemctl status nginx: Prikazuje status servisa (nginx, mysql, php-fpm, itd.).
- systemctl restart nginx: Restartuje servis.
- journalctl -u nginx -f: Prati logove servisa u realnom vremenu.
- tail -f /var/log/syslog: Prati sistemski log u realnom vremenu.
Mreža
- ping domen.com: Testira konekciju ka serveru ili domenu.
- curl -I https://domen.com: Prikazuje HTTP zaglavlja sajta (korisno za proveru redirekcija i headera).
- netstat -tulpn: Prikazuje sve aktivne mrežne konekcije i portove koji slušaju.
- dig domen.com: DNS upit koji pokazuje DNS zapise domena.
Transfer fajlova
SSH protokol omogućava i siguran transfer fajlova između vašeg računara i servera.
SCP (Secure Copy)
SCP koristi SSH za kopiranje fajlova. Za upload fajla na server koristite scp lokalni_fajl korisnik@server:/putanja/na/serveru. Za download sa servera koristite scp korisnik@server:/putanja/na/serveru/fajl ./lokalni_direktorijum. Za kopiranje celih direktorijuma dodajte -r flag. SCP je jednostavan ali ne nudi napredne funkcionalnosti poput nastavka prekinutog transfera.
SFTP (SSH File Transfer Protocol)
SFTP je interaktivni fajl transfer protokol koji radi preko SSH. Možete ga koristiti iz terminala sa komandom sftp korisnik@server ili kroz graficke klijente poput FileZilla, WinSCP ili Cyberduck. SFTP nudi navigaciju po direktorijumima, pregled fajlova, upload/download sa nastavkom prekinutog transfera i upravljanje permisijama - sve preko sigurne SSH konekcije.
rsync
rsync je napredniji alat za sinhronizaciju fajlova koji prenosi samo promene (deltu) umesto celih fajlova. Idealan je za bekap i sinhronizaciju velikih količina podataka. Komanda rsync -avz --progress izvor korisnik@server:/odredište sinhronizuje lokalni direktorijum sa serverskim, prenoseci samo izmenjene fajlove. rsync takođe podržava kompresiju tokom transfera i nastavak prekinutih operacija.
Bezbednosne preporuke za SSH
- Koristite SSH kljuceve: Uvek preferirajte kljuceve nad lozinkama. Isključite autentifikaciju lozinkom nakon postavljanja ključeva.
- Ogranite pristup: Koristite AllowUsers ili AllowGroups u sshd_config da ogranicite koji korisnici mogu pristupiti SSH-u.
- Fail2ban: Instalirajte fail2ban koji automatski blokira IP adrese posle određenog broja neuspešnih pokušaja prijave.
- Redovno ažurirajte: Držite SSH server (OpenSSH) ažurnim jer se bezbednosne ranjivosti povremeno otkrivaju i popravljaju.
- Zaštitite privatni ključ: Nikada ne delite privatni ključ. Postavite passphrase na ključ. Čuvajte backup na sigurnom mestu.
- Onemogućite root pristup: Postavite PermitRootLogin na no ili prohibit-password i koristite sudo za administrativne zadatke.
Zaključak
SSH je fundamentalni alat za upravljanje serverom i svaki vlasnik VPS-a ili namenskog servera treba da nauči osnovne SSH komande. Počnite sa jednostavnim zadacima poput pregledanja logova i restartovanja servisa, postepeno prelajte na naprednija podešavanja poput SSH ključeva i konfiguracije firewall-a. Sa praksom, komandna linija postaje brza i efikasnija od bilo kog grafickog interfejsa. Na BeoHosting-u, svi naši VPS paketi dolaze sa SSH pristupom i kompletnom root kontrolom, a naš tim za podršku je uvek dostupan da pomogne sa konfiguracijom i bezbednosnim podešavanjima.
BeoHosting Tim
10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Poslednje ažurirano: