Ssh authorized keys fail: Difference between revisions
Created page with "Rasmus Pukk A31" |
No edit summary |
||
(19 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Rasmus Pukk A31 | 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 == | |||
<pre> 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] </pre> | |||
<table border="1"> | |||
<tr> | |||
<th>Option</th> | |||
<th>Tähendus</th> | |||
</tr> | |||
<tr> | |||
<td> -4 </td> | |||
<td> Kasutab ainult IPv4 protokolli. </td> | |||
</tr> | |||
<tr> | |||
<td> -6 </td> | |||
<td> Kasutab ainult IPv6 protokolli. </td> | |||
</tr> | |||
<tr> | |||
<td> -b </td> | |||
<td> Määrab ära võtme krüpteerimiseks bittide arvu. Vaikimisi 2048, max 4096. </td> | |||
</tr> | |||
<tr> | |||
<td> -C </td> | |||
<td> Määrab täiendavad parameetrid -T testkäsu jaoks. </td> | |||
</tr> | |||
<tr> | |||
<td> -D </td> | |||
<td> Uui märgitud, siis sshd ei ühendu lahti ning temast ei saa ''daemon''. Võimaldab ssh jälgimist. </td> | |||
</tr> | |||
<tr> | |||
<td> -d </td> | |||
<td> ''debug mode''. See käsk on ettenähtud serveri ''debugimiseks''. Mitu -d valikut suurendab ''debug'' taset, max 3. </td> | |||
</tr> | |||
<tr> | |||
<td> -e </td> | |||
<td> ssh saadab väljundi süsteemilogi asemel standard vealogisse. </td> | |||
</tr> | |||
<tr> | |||
<td> -f </td> | |||
<td> Määrab ära konfiguratsioonifaili nime. </td> | |||
</tr> | |||
<tr> | |||
<td> -i </td> | |||
<td> Määratleb ära, et ssh käivitatake inetd abil. (internet service daemon)</td> | |||
</tr> | |||
<tr> | |||
<td> -n </td> | |||
<td> Määrab ära mis tasemega vead ära näidatakse. </td> | |||
</tr> | |||
<tr> | |||
<td> -k </td> | |||
<td> Määratleb ära, kui tihti serveri võtit regenereeritakse. </td> | |||
</tr> | |||
<tr> | |||
<td> -o </td> | |||
<td> Kasutatakse, et määrata formaat, mida kasutatakse konfiguratsioonifailis. Kasulik täpsustades võimalusi, millel ei ole eraldi käsureamärgistust. </td> | |||
</tr> | |||
<tr> | |||
<td> -p </td> | |||
<td> Määrab pordi mille pealt serveri ühendusi kuulab. Võib olla mitu. Konfiguratsioonis eelseadistatud porte eiratakse, kui port on kindlaks määratud käsurealt. </td> | |||
</tr> | |||
<tr> | |||
<td> -q </td> | |||
<td> ''Quiet mode''. Ainult suuremaid vigu kirjutatakse süsteemilogisse. </td> | |||
</tr> | |||
<tr> | |||
<td> -T </td> | |||
<td> Pikendatud testimisrežiim. Kontrollib konfiguratsioonifaili kehtivust ja kirjutab väljundi standardväljundisse, seejärel sulgub. </td> | |||
</tr> | |||
<tr> | |||
<td> -t </td> | |||
<td> Testimisrežiim. Kontrollib konfiguratsioonifaili ja võtmete kehtivust. </td> | |||
</tr> | |||
<tr> | |||
<td> -u </td> | |||
<td> Määrab ära ''utmp'' välja suuruse, mis hoiab serveri hostinime. Kui hostinimi on suurem, siis kasutatakse arvulist väärtust. </td> | |||
</tr> | |||
</table> | |||
== Authorized_keys == | |||
<pre> | |||
<ssh-rsa or ssh-dss> <long string of characters> <username>@<host> | |||
</pre> | |||
<table border="1"> | |||
<tr> | |||
<th>Option</th> | |||
<th>Tähendus</th> | |||
</tr> | |||
<tr> | |||
<td> cert-authority </td> | |||
<td> Täpsustab, et nimetatud võti on sertifitseerimise autoriteet(CA), mis on usaldusväärne, et kinnitada allkirjastatud sertifikaadid kasutaja autentimiseks. </td> | |||
</tr> | |||
<tr> | |||
<td> command="command" </td> | |||
<td> Täpsustab, et käsk täidetakse alati, kui kasutada seda võtit autentimiseks. Kasutaja poolt esitatud käsku (olemasolul) ei arvestata. </td> | |||
</tr> | |||
<tr> | |||
<td> environment="NAME=value" </td> | |||
<td> 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. </td> | |||
</tr> | |||
<tr> | |||
<td> from="pattern-list" </td> | |||
<td> Lisaks avaliku võtme autentimisele määrab ära, kas kanooniline nimi kaughostilt või IP aadress on esindatud mustrite nimekirjas. Vaata mustreid ssh_config. </td> | |||
</tr> | |||
<tr> | |||
<td> no-agent-forwarding </td> | |||
<td> Keelab serveritevahelise võtmete autentimisandmete suunamise. </td> | |||
</tr> | |||
<tr> | |||
<td> no-port-forwarding </td> | |||
<td> Keelab TCP suunamise. Iga järgnev taotlus saab vasteks veateate. </td> | |||
</tr> | |||
<tr> | |||
<td> no-pty </td> | |||
<td> Keelab tty jaotuse. </td> | |||
</tr> | |||
<tr> | |||
<td> no-user-rc </td> | |||
<td> Keelab ~/.ssh/rc kasutamisvõmaluse. </td> | |||
</tr> | |||
<tr> | |||
<td> no-X11-forwarding </td> | |||
<td> Keelab X11 suunamise. Iga järgnev taotlus saab vasteks veateate.</td> | |||
</tr> | |||
<tr> | |||
<td> permitopen="host:port" </td> | |||
<td> 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. </td> | |||
</tr> | |||
<tr> | |||
<td> principals="principals" </td> | |||
<td> ''Cert authority'' real täpsustab millised on lubatud põhimõtted serifikaadi autentimiseks. Vähemalt üks vaste peab ilmuma, et sertifikaat aksepteeritaks. </td> | |||
</tr> | |||
<tr> | |||
<td> tunnel="n" </td> | |||
<td> Sunnib serveri tegema tunnel seadme (network tunnel pseudo-device). </td> | |||
</tr> | |||
</table> | |||
'''Näide''' | |||
<pre> | |||
# 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 | |||
</pre> | |||
=Kasutamine= | |||
Esimesena loome paari RSA võtmeid ning seadistame vastavad failiõigused. | |||
<pre> | |||
mkdir ~/.ssh | |||
chmod 700 ~/.ssh | |||
ssh-keygen -t rsa | |||
</pre> | |||
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. | |||
<pre> | |||
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 | |||
</pre> | |||
Kolmandaks kopeerime võtmed. | |||
<pre> | |||
ssh-copy-id <username>@<host> | |||
</pre> | |||
Teine variant võtmete kopeerimiseks. | |||
<pre> | |||
cp authorized_keys authorized_keys_Backup | |||
cat id_rsa.pub >> authorized_keys | |||
</pre> | |||
Kontrolli tulemust: | |||
<pre> | |||
ssh <username>@<host> | |||
</pre> | |||
Seejärel peaks süsteem küsima privaatvõtme parooli. | |||
<pre> | |||
Enter passphrase for key '/home/<user>/.ssh/id_rsa': | |||
</pre> | |||
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 | |||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] |
Latest revision as of 16:39, 9 December 2014
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