Ssh
Secure shell
Autor
Ragnar Nurmla
AK32
Olemus
Secure Shell või lihtsalt SSH on võrguprotokoll mis võimaldab andmete vahetust võrguseadmete vahel üle turvalise kanali. SSH loodi asendamaks ebaturvalisi kaughaldus vahendeid, näiteks telnet, kuna need saadavad andmeid krüpteerimata kujul üle võrgu. Tänu SSH krüpteerimisele saab andmeid saata üle ebaturvalise võrgu, näiteks Internet ja säilib andmete konfidentsiaalsus ning terviklikkus. SSH on kasutuses peamiselt GNU/Linux ja Unix süsteemides, võimaldades eemalt logida kasutaja kestale (shell). Turvalisus põhineb avaliku ja salajase võtme ehk asümmeetrilisel krüptograafial. SSH kasutab klient-server mudelit.
Kasutusvaldkonnad
- Shellile logimine (telneti asendus)
- Korralduse täitmine eemalseisvas masinas
- Turvaline failide kopeerimine kohalikust masinast teise (scp)
- X11 edastus eemalseisvast masinast
Paigaldamine
Kasutades apt pakihalduse vahendit saab SSH-d paigaldada käsuga:
sudo apt-get install ssh
Mille tulemusena paigaldadakse meie arvutisse openssh-server ja ssh, scp, sftp. Esimene on ssh server mis kuulab vaikimis pordil 22 ja teised kolm on kliendid eemalseisvasse masinasse logimiseks ja failide kopeerimiseks.
Kontrollime kas ssh server läks tööle ja kuulab pordil:
netstat -tnlp
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2359/sshd
Tundub, et õnnestus.
Kasutamine
ssh
Kõige lihtsam viis ssh-d kasutada on ühenduse loomine eemalseisvasse masinasse, selleks anname käsu
ahven@pingviinike:~$ ssh www
Kui me loome ühendust esimest korda kasutaja ahven alt masinasse nimega www, siis kuvatakse meile järgmine tekst:
The authenticity of host 'www (10.59.1.84)' can't be established. RSA key fingerprint is a2:35:41:54:05:37:b4:e9:69:5f:19:d3:87:74:e4:1a. Are you sure you want to continue connecting (yes/no)? yes
Kui oleme kindlad, et just see masin on see kuhu me ühendust tahame luua kirjutame yes. Mis järel luuakse meie kodukataloogi kaust .ssh ning selle sisse fail known_hosts, mille sisse kirjutatakse serveri avalik võti.
Warning: Permanently added 'www,10.59.1.84' (RSA) to the list of known hosts.
Ning seejärel küsitakse parooli:
ahven@www's password:
Ning kui parool on õige, olemegi loonud turvalise ühenduse masinasse nimega www
ahven@www:~$
Ühenduse lõpetaatakse käsuga exit
ahven@www:~$ exit logout Connection to www closed. ahven@pingviinike:~$
Kui tahame luua ühendust mõne teise kasutajanimega peame kasutama võtit l millele järgi anda kasutajanimi:
ahven@pingviinike:~$ ssh -l rax www rax@www's password:
Nüüd küsitakse juba kasutaja rax parooli. Sama asja teeb ka selline käsk:
ahven@pingviinike:~$ ssh rax@www rax@www's password:
scp
SCP on üks osa SSH pakist. See võimaldab turvaliselt kopeerida faile ühest masinast teise üle võrgu.
SCP kasutamine võiks välja näha nii:
root@pingviinike:~# scp tainas.txt rax@www:/home/rax/ rax@www's password: tainas.txt 100% 0 0.0KB/s 00:00 root@pingviinike:~#
Kohalikus masinas olev fail tainas.txt kopeeritakse kasutaja rax õigustega masinasse nimega www kausta /home/rax
Loomulikult on võimalik teha ka vastupidi:
root@pingviinike:~# scp rax@www:/home/rax/tainas.txt /root rax@www's password: tainas.txt 100% 0 0.0KB/s 00:00 root@pingviinike:~#
Remote maisnast www kaustast /home/rax kopeeritakse fail tainas.txt kohaliku masina /root kausta.
sftp
Alternatiiv SCP kasutamisele on kasutada SFTP-d. SFTP-ga saab ühenduda masinatesse kus "jookseb" ssh server (sshd). Ühendus luuakse nagu hariliku FTP kliendiga ainult krüpteeritult. Kasutaja liides on ka nagu FTP oma, saab kasutada käske nagu näiteks ls, cd, get, put jne.
Kasutamine:
root@pingviinike:~# sftp rax@www Connecting to www... rax@www's password: sftp>
Selle tulemusena tegime SFTP ühenduse masinasse www kasutaja rax kodukataloogi.
SSH serveri seadistus
Paroolita autentimine
Kui on vaja pidevalt teha ühedusi mingisse kindlasse masinasse või kui on loodud varunduse lahendus üle ssh siis on mugav kasutada ssh autentimist ilma paroolita.
Esmalt kontrollime kas kasutaja kodukaustas, kelle nimega tahame autentida, on olemas kaust .ssh:
[rax@fjoodor ~]$ ssh rax@www ls -la rax@www's password: total 24 drwxr-xr-x 2 rax rax 4096 2010-03-13 12:51 . drwxr-xr-x 5 root root 4096 2010-04-17 10:42 .. -rw------- 1 rax rax 47 2010-04-17 11:07 .bash_history -rw-r--r-- 1 rax rax 220 2010-02-26 11:40 .bash_logout -rw-r--r-- 1 rax rax 3116 2010-02-26 11:40 .bashrc -rw-r--r-- 1 rax rax 675 2010-02-26 11:40 .profile [rax@fjoodor ~]$
Kuna .ssh kausta pole siis tekitame selle sinna:
ssh rax@www mkdir .ssh rax@www's password: [rax@fjoodor ~]$
Ning kontrollime nüüd:
[rax@fjoodor ~]$ ssh rax@www ls -la rax@www's password: total 28 drwxr-xr-x 3 rax rax 4096 2010-04-24 10:21 . drwxr-xr-x 5 root root 4096 2010-04-17 10:42 .. -rw------- 1 rax rax 47 2010-04-17 11:07 .bash_history -rw-r--r-- 1 rax rax 220 2010-02-26 11:40 .bash_logout -rw-r--r-- 1 rax rax 3116 2010-02-26 11:40 .bashrc -rw-r--r-- 1 rax rax 675 2010-02-26 11:40 .profile drwxr-xr-x 2 rax rax 4096 2010-04-24 10:21 .ssh [rax@fjoodor ~]$
Täitsa olemas! Turvalisuse huvides peaksime tegema selle kausta ligipääsetavaks vaid selle omanikule. Selleks anname käsu:
[rax@fjoodor ~]$ ssh rax@www chmod 700 .ssh rax@www's password: [rax@fjoodor ~]$
Nüüd genereerime avaliku ja salajase võtme. Seda teeme käsuga:
[rax@fjoodor ~]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/rax/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/rax/.ssh/id_dsa. Your public key has been saved in /home/rax/.ssh/id_dsa.pub. The key fingerprint is: 5c:b6:df:53:e9:0f:ce:c4:4c:2d:92:71:aa:78:b1:e0 rax@fjoodor The key's randomart image is: +--[ DSA 1024]----+ | | | | | o . . | | . o . = ..| | S o + o.o| | . o = *.o | | E + . B. | | . + o.| | o .| +-----------------+ [rax@fjoodor ~]$
-t võtmega ütleme krüpteerimis algoritmi, mis antud näites on dsa. Seejärel küsitakse kuhu kausta genereeritud võtmed pannakse, milleks vaikimisi on meie kodukaustas asuv .ssh nimeline kaust. Järgmisena pakutakse võimalust võtmele veel parool peale panna, kuna meie eesmärk on paroolita autentimine siis lähme sealt lihtsalt klahvi enter vajutades edasi ning ongi võtmed olemas.
[rax@fjoodor ~]$ ls -l .ssh/ total 16 -rw------- 1 rax rax 668 2010-04-24 10:30 id_dsa -rw-r--r-- 1 rax rax 601 2010-04-24 10:30 id_dsa.pub -rw-r--r-- 1 rax rax 398 2010-04-24 10:16 known_hosts [rax@fjoodor ~]$
Nüüd peame toimetama avaliku võtme turvalist teed pidi masinasse kuhu tahame ühendust luua. Eesmärk on meie genereeritud avalik võti paigutada masina www kasutaja rax kodukasutas olevasse faili authorized_keys mis asub kataloogis .ssh. Seda püüame saavutada nii:
[rax@fjoodor ~]$ cat .ssh/id_dsa.pub | ssh rax@www 'cat >> .ssh/authorized_keys' rax@www's password:
Selle tulemusena lisama äsja genereeritud avaliku võtme faili .ssh/authorized_keys, oluline on just lisada mitte seda faili üle kirjutada kuna seal võib ees juba olla mõne teise masina avalik võti. Kui nüüd viga ei tekkinud siis võib eeldada et kõik õnnestus ja meie eesmärk on täidetud. Kontrollime:
[rax@fjoodor ~]$ ssh rax@www Linux www 2.6.26-2-686 #1 SMP Wed Feb 10 08:59:21 UTC 2010 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Apr 24 10:46:32 2010 from pingviinike.lan rax@www:~$
Jah tõesti meie käest ei küsitud enam autentimiseks parooli.