SSH: Autorizacija putem ključeva
|
Ssh (eng. Secure Shell) je, svakako najveći prijatelj svakog Sistem Administratora. Opet, svako ko je održavao više od jednog servera, zna koliko glavobolja može da donese gomila lozinki neophodnih za autorizaciju na istima. Ukoliko se pritom radi o hitnoj intervenciji, glavobolja prerasta u problem.
Uvod
[dp]U[/dp] današnjem tekstu ću (verovatno) mlađim kolegama, približiti ovaj način autorizacije, koji je prilikom, održavanja većeg broja servera, maltene podjednako važan kao i sam SSH protokol.
Suština svega jeste da public ključ (eng. “key”) generišete na svom računaru a pritom isti upload-ujete u odgovarajući folder na svakom od servera koji administrirate.
Keiranje ključa
ssh-keygen -b 1024 -t dsa
Prethodna komanda će kreirati 1024-bitni DSA SSH ključ. Nakon izvršavanja iste, output je odprilike ovakav:
Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
Sada je na redu kopiranje javne (eng. “public”) verzije ključa na željeni server. Postoji odličan util za to, pod imenom “scp”, a sintaksa je sledeća:
scp .ssh/id_rsa.pub [email protected]:
Ono što bih napomenuo ovde, jeste da je vrlo verovatno, s obzirom da čitate ovaj tekst, da SSH na pomenutom serveru, radi na nestandardnom portu, kao i da root login nije moguć. Kako biste ovo rešili, naravno, u /etc/ssh/sshd_config fajlu “PermitRootLogin” promenite u “yes” i postavite port parametar scp komandi:
scp -P 12345 .ssh/id_rsa.pub [email protected]:
Takođe, obratite pažnju na dve tačke na kraju linije. To označava putanju za snimanje ključa na željenom serveru. U mom primeru, ključ će biti upload-ovan u /root folder.
Server
Vreme je za serverski deo posla. Neophodno je da id_rsa.pub prebacimo u .ssh folder i to pod imenom authorized_keys.
ssh [email protected] (-p PORT) mkdir .ssh cat id_rsa.pub >> .ssh/authorized_keys rm id_rsa.pub && chmod 600 .ssh/authorized_keys
Kako bi proverili da sve radi kako treba, diskonektujte se sa servera, te na svom računaru izvršite:
ssh [email protected]
Od Vas će se zatražiti da unsete lozinku ključa (onu koju ste uneli prilikom kreacije istog), a potom ćete, ako je sve prošlo kako treba, postati root na željenom serveru.
SSH-Agent
Kompletan ovaj tekst bi bio besmislen bez opcije čuvanja lozinke za određeni ključ, jer biste, u suprotnom, prilikom svake konekcije morali unositi istu.
Komandom ssh-agent, dobijate prikaz varijabli koje isti koristi, a kako bi isti izvršili, koristimo komandu “eval”:
eval `ssh-agent`
Predlažem postavljanje navedene komande u .bashrc fajl kako bi se ista izvršila prilikom svake sesije.
Nakon pokretanja istog, neophodno je da komandom “ssh-add” dodate željeni ključ. Problem sa ovim jeste taj što ćete prilikom svakog ponovnog otvaranja terminala morati da unosite lozinku ključa. I to se može zaobići, a alat koji će nam pomoći je Keychain.
Keychain
Sve što je neophodno da uradite jeste da sledeći kod (komandu), postavite u .bashrc:
eval `keychain --eval --agents ssh ~/.ssh/id_dsa`
Izlogujte se, a potom ulogujte ponovo. Keychain će Vas (ako ga pokrećete prvi put), pitati za lozinku ključa i to je to :).
Završna reč
Ono što bih preporučio jeste da dodate tzv. “alias” u .bashrc fajlu, kako biste dodatno olakšali posao autorizacije.
alias example='ssh [email protected] -p 12345' alias example2='ssh [email protected]'
Do sledećeg pisanja, pozdrav!