Archive for svibanj 20th, 2008

SSH bez lozinke

svibanj 20th, 2008 No Comments

Svi znaju koliko je backup koristan i važan. Oni koji to ne znaju, saznati će čim prvi put izgube podatke, a oni koji znaju koliko je važan znaju i kolika je gnjavaža svako malo raditi backup. Zbog toga većina administratora ima skriptu koja automatski izrađuje backup jednom dnevno, jednom tjedno ili u nekom drugom periodu (u svakom slučaju, što češće to bolje). E sad, kod backupa je važno da se ne nalazi na istom mjestu gdje je računalo sa podacima koji se backupiraju jer uvijek može doći do požara ili nekog drugog problema zbog čega mogu nestati i backupirani podaci čak i ako se nalaze na drugom disku.

Zato bi bilo dobro da skripta koja radi sigurnosnu pohranu podataka odmah te podatke i iskopira na drugo računalo, a jedan od najsigurnijih načina je kopiranje preko SSH protokola. Budući da nije sigurno u skriptu upisati lozinku, bolje je izgenerirati privatni i javni ključ i preko njih vršiti autorizaciju bez lozinke. To se radi na slijedeći način.

  1. Generiramo privatni i javni ključ:
    ssh-keygen -t dsa -f /home/<korisnik>/.ssh/id_dsa

    Na upit da upišete passphrase, samo stisnite Enter.
    Ovdje -t određuje tip enkripcije, a -f određuje gdje će se nalaziti datoteke sa privatnim i javnim ključevima.

  2. Nakon toga iskopiramo javni ključ na server na koji se ubuduće želimo spajati putem SSH protokola bez lozinke.
    scp /home/<korisnik>/.ssh/id_dsa.pub <korisnik>@<udaljeni.server>:~/.ssh/id_dsa.pub

    Ovaj put morate upisati lozinku.

  3. Sada se spojite na udaljeni server (još jednom, posljednji put upišite lozinku) i dodajte javni ključ u poznate javne ključeve na serveru.
    ssh <korisnik>@<udaljeni.server>
    cd ~/.ssh
    cat id_dsa.pub >> authorized_keys2
    chmod 640 authorized_keys2
    rm id_dsa.pub
    exit
  4. Na kraju, pokušajte se ponovo spojiti na udaljeni server. Trebali biste uspjeti bez da morate upisati lozinku.

Ukoliko održavate neki server na kojem se vrti Debian ili neka od distribucija temeljenih na Debianu (Kubuntu, Ubuntu i slično) ili ste jednostavno vlasnik računala sa takvih operativnim sustavom, sigurno često radite nadogradnju sustava sa novim verzijama instaliranih paketa (ukoliko ne radite, trebali biste :-) ). Obično je dovoljno u shell (komandnu liniju) upisati naredbe

debian:~# apt-get update
debian:~# apt-get upgrade

i instalacija novih verzija će se izvršiti automatski (pod uvjetom da postoje nove verzije paketa). No, ponekad se to ne dogodi nego se pojavi poruka ‘The following changes have been kept back’. To se događa zbog toga što su se promijenile ovisnosti (eng. dependencies) paketa koji su instalirani na računalu (ili serveru) i to na taj način da novi paket mora biti instaliran kako bi se napravio upgrade.

Na primjer, na mojem serveru mi se nedavno pojavila poruka:

debian:~# apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
The following packages have been kept back:
  openssh-client openssh-server
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

To znači da paketi openssh-client i openssh-server ne mogu biti samo nadograđeni na novu verziju već je potrebno instalirati nove pakete. Jednostavno rješenje je naredba apt-get dist-upgrade.

root@sun:~# apt-get dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following NEW packages will be installed:
  openssh-client openssh-server
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 3697kB of archives.
After unpacking 1860kB of additional disk space will be used.
Do you want to continue? [Y/n]

Na taj način instalirat će se nove verzije svih paketa kojima je potreban upgrade i sve nove ovisnosti koje su potrebne kako bi se nadogradnja mogla izvršiti.