Ssh authorized keys fail

From EIK wiki

Rasmus Pukk A31

Sissejuhatus

Authorized keys määratleb ära faili, kus sisalduvad avalikud võtmed kasutaja autentimiseks. Kui asukohta pole määratud teisiti, siis on vaikeasukohaks ~/.ssh/authorized_keys. Iga erinev võti peab olema kirjutatud tervele üksikule reale. Authorized_keys registrisse on võimalik kanda kõiki DSA ja RSA avalikke võtmeid millega soovite sisse logida, kuid privaatsed võtmed jäävad ainult masinasse kust sisselogimine toimub. Faili sisu ei ole väga tundlik, kuid soovituslik on seadistada vastavad failiõigused. Käskluste ette lisa sudo, kui sa pole juba juurkasutajaks üle läinud.

Süntaks

SSH

  sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-f config_file]
          [-g login_grace_time] [-h host_key_file] [-k key_gen_time]
          [-o option] [-p port] [-u len] 
Option Tähendus
-4 Kasutab ainult IPv4 protokolli.
-6 Kasutab ainult IPv6 protokolli.
-b Määrab ära võtme krüpteerimiseks bittide arvu. Vaikimisi 2048, max 4096.
-C Määrab täiendavad parameetrid -T testkäsu jaoks.
-D Uui märgitud, siis sshd ei ühendu lahti ning temast ei saa daemon. Võimaldab ssh jälgimist.
-d debug mode. See käsk on ettenähtud serveri debugimiseks. Mitu -d valikut suurendab debug taset, max 3.
-e ssh saadab väljundi süsteemilogi asemel standard vealogisse.
-f Määrab ära konfiguratsioonifaili nime.
-i Määratleb ära, et ssh käivitatake inetd abil. (internet service daemon)
-n Määrab ära mis tasemega vead ära näidatakse.
-k Määratleb ära, kui tihti serveri võtit regenereeritakse.
-o Kasutatakse, et määrata formaat, mida kasutatakse konfiguratsioonifailis. Kasulik täpsustades võimalusi, millel ei ole eraldi käsureamärgistust.
-p Määrab pordi mille pealt serveri ühendusi kuulab. Võib olla mitu. Konfiguratsioonis eelseadistatud porte eiratakse, kui port on kindlaks määratud käsurealt.
-q Quiet mode. Ainult suuremaid vigu kirjutatakse süsteemilogisse.
-T Pikendatud testimisrežiim. Kontrollib konfiguratsioonifaili kehtivust ja kirjutab väljundi standardväljundisse, seejärel sulgub.
-t Testimisrežiim. Kontrollib konfiguratsioonifaili ja võtmete kehtivust.
-u Määrab ära utmp välja suuruse, mis hoiab serveri hostinime. Kui hostinimi on suurem, siis kasutatakse arvulist väärtust.


Authorized_keys

<ssh-rsa or ssh-dss> <long string of characters> <username>@<host>
Option Tähendus
cert-authority Täpsustab, et nimetatud võti on sertifitseerimise autoriteet(CA), mis on usaldusväärne, et kinnitada allkirjastatud sertifikaadid kasutaja autentimiseks.
command="command" Täpsustab, et käsk täidetakse alati, kui kasutada seda võtit autentimiseks. Kasutaja poolt esitatud käsku (olemasolul) ei arvestata.
environment="NAME=value" Täpsustab, et string lisatakse keskkonda sisse logides, kasutades seda võtit. Selliselt seatud keskkonnamuutujad kirjutavad üle teised vaikimisi keskkonnaväärtused. Mitu seda tüüpi valikut on lubatud.
from="pattern-list" Lisaks avaliku võtme autentimisele määrab ära, kas kanooniline nimi kaughostilt või IP aadress on esindatud mustrite nimekirjas. Vaata mustreid ssh_config.
no-agent-forwarding Keelab serveritevahelise võtmete autentimisandmete suunamise.
no-port-forwarding Keelab TCP suunamise. Iga järgnev taotlus saab vasteks veateate.
no-pty Keelab tty jaotuse.
no-user-rc Keelab ~/.ssh/rc kasutamisvõmaluse.
no-X11-forwarding Keelab X11 suunamise. Iga järgnev taotlus saab vasteks veateate.
permitopen="host:port" Piirab kohaliku pordi suunamist nii, et see võib võtta ühendust ainult määratud masina ja pordiga. IPv6 aadresse saab määrata nurksulgudega. Võimalik on kasutada mitu permitopen valikuid, mis on eraldatud komaga.
principals="principals" Cert authority real täpsustab millised on lubatud põhimõtted serifikaadi autentimiseks. Vähemalt üks vaste peab ilmuma, et sertifikaat aksepteeritaks.
tunnel="n" Sunnib serveri tegema tunnel seadme (network tunnel pseudo-device).


Näide

# Comments allowed at start of line 
ssh-rsa AAAAB3Nza...LiPk== user@example.net 
from="*.sales.example.net,!pc.sales.example.net" ssh-rsa 
AAAAB2...19Q== john@example.net 
command="dump /home",no-pty,no-port-forwarding ssh-dss 
AAAAC3...51R== example.net 
permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss 
AAAAB5...21S== 
tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== 
jane@example.net

Kasutamine

Esimesena loome paari RSA võtmeid ning seadistame vastavad failiõigused.

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

Teisena peab kasutaja ära määrama kuhu võtmed salvestatakse ning parooli. Parool kaitseb kasutaja privaatvõtit, mis on salvestatud masina kõvakettale kust sisselogimine toimub.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/b/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/b/.ssh/id_rsa.
Your public key has been saved in /home/b/.ssh/id_rsa.pub.
Your public key is now available as .ssh/id_rsa.pub in your home folder.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 user@hostname

Kolmandaks kopeerime võtmed.

ssh-copy-id <username>@<host>

Teine variant võtmete kopeerimiseks.

cp authorized_keys authorized_keys_Backup
cat id_rsa.pub >> authorized_keys

Kontrolli tulemust:

ssh <username>@<host>

Seejärel peaks süsteem küsima privaatvõtme parooli.

Enter passphrase for key '/home/<user>/.ssh/id_rsa':

Peale privaatvõtme parooli(olemasolul) sisestamist, peaksid saama sisse logida.

Kokkuvõte

Ssh võtmetega autentimine on väga turvaline ja mugav moodus serverite kaitsmiseks "kutsumata külaliste" eest. Kasutades avaliku võtme autentimist on igal arvutil avalik ja privaatvõti. Privaatvõti jääb alati sisselogiva arvuti kõvakettale ning avalikud võtmed kirjutatakse authorized_keys faili. Ka privaatvõtit saab parooliga enda kõvakettal kaitsta. Sisselogides krüpteerib ssh server andmed avaliku võtme abil nii, et ainult sinu käes olev privaatvõti suudab neid lahti lugeda. Niimoodi ei saa keegi kõrvaline isik teie serveris ringi nuhkida.

Kasutatud allikad

http://man.he.net/man5/authorized_keys

http://sshkeychain.sourceforge.net/mirrors/SSH-with-Keys-HOWTO/SSH-with-Keys-HOWTO-4.html

http://www.linuxproblem.org/art_9.html

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2

https://help.ubuntu.com/community/SSH/OpenSSH/Keys

http://askubuntu.com/questions/46424/adding-ssh-keys-to-authorized-keys

http://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#.7E.2F.ssh.2Fauthorized_keys

http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/sshd.8?query=sshd