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
[bash]ssh-keygen -b 1024 -t dsa[/bash]
Prethodna komanda će kreirati 1024-bitni DSA SSH ključ. Nakon izvršavanja iste, output je odprilike ovakav:
[bash]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: [/bash]
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:
[bash]scp .ssh/id_rsa.pub root@example.com:[/bash]
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:
[bash]scp -P 12345 .ssh/id_rsa.pub root@example.com:[/bash]
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.
[bash]ssh root@example.com (-p PORT)
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub && chmod 600 .ssh/authorized_keys[/bash]
Kako bi proverili da sve radi kako treba, diskonektujte se sa servera, te na svom računaru izvršite:
[bash]ssh root@example.com[/bash]
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”:
[bash]eval `ssh-agent`[/bash]
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:
[bash]eval `keychain –eval –agents ssh ~/.ssh/id_dsa`[/bash]
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.
[bash]alias example=’ssh root@example.com -p 12345′
alias example2=’ssh user@example2.com'[/bash]
Do sledećeg pisanja, pozdrav!