OpenSSH võtmetega autentmine16. Jun '15
Sissejuhatus
OpenSSH kasutab vaikimisi kasutaja autentimiseks parooli. Tihtipeale see pole just kõige turvalisem viis kasutajat autentida, kuna parooli tippimine võib kõrvalt vaatajale näha olla ning lühikese parooli puhul on realistlik ka sisse murdmine toore jõuga. Selle vastu aitab võtmepaari genereermine ning avaliku võtme serverisse kopeerimine.
Võtmepaari loomine
Vaikimisi ssh-keygen loob RSA võtmed, mis on 2048-bit ja suurema võtmepikkuse puhul piisavalt tugevad, aga järgnevas näites kasutame ECDSA (elliptic-curve digital signature algorithm), kuna see on üks kõige modernsemaid asümmeetrilise võtme algoritme:
ssh-keygen -t ecdsa -P ''
Programm küsib sisendiks kuhu salvestada võtmed, seal võib vajutada Enter, et kasutada vaikimisi kataloogi .ssh kodukataloogis kuhu kirjutatakse privaatne võti failinimiega id_ecdsa ning avalik võti failinimega id_ecdsa.pub. Väljund peaks välja nägema umbkaudu järgnev:
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/kasutaja/.ssh/id_ecdsa):
Your identification has been saved in /home/kasutaja/.ssh/id_ecdsa.
Your public key has been saved in /home/lauri/.ssh/id_ecdsa.pub.
The key fingerprint is:
2e:36:33:9b:3e:ec:23:62:4f:be:82:b5:8a:de:72:2b kasutaja@localhost
The key's randomart image is:
+--[ECDSA 256]---+
| |
| |
| |
| |
| S |
| . . |
| o ...* . |
|oE*+..+B |
|+++*===o |
+-----------------+
Loodud võtmepaar vastab konkreetse arvuti parajasti sisse logitud kasutajale ning avalik võti sobib selle kasutaja autentimiseks teistes arvutites.
Avaliku võtme kopeerimine
Enne kui jätkad veendu et sihtmasinas oleks OpenSSH server paigaldatud, vastasel korral võid serverist vastuseks saada Connection refused:
sudo apt-get install openssh-server
Ülal loodud id_ecdsa.pub alusel saab kasutajat autentida ning selleks, et võimaldada sihtarvuti paroolita ligipääs avaliku võtme alusel võib kasutada ssh-copy-id käsku:
ssh-copy-id kasutaja@sihtmasin
See käsk logib sihtmasinasse sisse parooliga, vajadusel loob .ssh kataloogi sihtmasinas ning lisab sinna authorized_keys faili lõppu avaliku võtme.
Võtmega sisse logimine
Kui võtmed on olemas ning avalik võti lisatud sihtmasinasse, peaks autentmine toimima ilma paroolita. Kui võtmepaar on olemas pakub klient seda autentmismeetodit serverile, kui serverile sobib kliendi pakutav võti lastakse kasutaja sisse.
Parooliga sisselogimise keelamine
Kui võtmega autentmine toimib ning parooli pole vaja mõneks muuks otstarbeks (nt sudo), võib eemaldada ja keelata kasutaja parooli sihtmasinas:
# Parooli eemaldada ja keelata saab vaid root
passwd -d -l kasutajanimi
Kui parooliga sisselogimist on siiski tarvis aga üle SSH ligipääs võiks olla lubatud vaid avaliku võtmega, võib SSH serveri konfiguratsioonis välja lülitada parooliga autentmise kasutades PasswordAuthentication no rida:
sed -r -e 's/^.?PasswordAuthentication .*/PasswordAuthentication no/' -i /etc/ssh/sshd_config
service ssh reload