]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/blob - cviceni/rtime-git-ssh-key.mdwn
Mention correct check-ssh-key output
[edu/osp-wiki.git] / cviceni / rtime-git-ssh-key.mdwn
1 [[!meta title="Přístup ke git repozitářům na serveru rtime"]]
2
3 Přístup se děje protokolem SSH (*ssh://git@rtime.felk.cvut.cz/...*) a
4 uživatelé jsou autorizováni výhradně pomocí SSH klíčů. Hláška
5 "*Permission denied (publickey).*" znamená, že nemáte SSH klíče
6 správně nastaveny. Otestovat přístup si můžete příkazem
7
8     ssh git@rtime.felk.cvut.cz info
9
10 Server rtime automaticky importuje veřejné klíče z vašeho školního
11 home adresáře. Import probíhá každou celou hodinu a ve čtvrtek přes
12 den každých **5 minut**. Za SSH veřejný klíč jsou považovány soubory
13 odpovídající masce `~/.ssh/*.pub`.
14
15 ## Generování klíčů
16
17 Nejsnazší cesta jak si SSH klíč vytvořit je spustit na počítači
18 v laboratoři (či na serveru postel.felk.cvut.cz) příkaz
19
20     ssh-keygen
21     
22 Ten vytvoří pár klíčů (veřejný a soukromý) a ve výchozím nastavení je
23 uloží do správného adresáře pod správným jménem. 
24
25 Pokud veřejný klíč kopírujete do svého domovského adresáře z jiného
26 počítače, je nezbytně nutné, aby byla správně nastavena práva k vašemu
27 adresáři s SSH daty. Do adresáře nesmí mít přístup nikdo jiný než
28 vlastník. K privátnímu klíči (ten bez `*.pub`) nesmí mít přístup
29 ostatní uživatelé. K veřejnému klíči by naopak měla být práva pro
30 čtení nastavena pro všechny. Aktuálně nastavená práva si můžete
31 zkontrolovat pomocí následujících příkazů:
32
33     uzivatel@postel:~$ ls -ld ~/.ssh
34     drwx------ 2 uzivatel users 136 Mar  9 12:23 /home/pisa/.ssh
35     
36     uzivatel@postel:~$ ls -l ~/.ssh
37     total 16
38     -rw------- 1 uzivatel users 1679 Mar  9 12:23 id_rsa
39     -rw-r--r-- 1 uzivatel users  393 Mar  9 12:23 id_rsa.pub
40     -rw-r--r-- 1 uzivatel users 4272 Dec  7 09:39 known_hosts
41
42 Zkontrolujte si vaše klíče příkazem
43
44     check-ssh-key
45
46 Ten upozorní na případné problémy a vypíše, které klíče budou na
47 server `rtime` automaticky importovány. Pokud máte problém s právy
48 k souborům či adresářům, prostudujte si dokumentaci `man chmod`.
49
50 Po úspěšném importu vašeho klíče by měl výstup přikazu `check-ssh-key`
51 vypadat zhruba následovně:
52
53     Public keys in your home directory
54     ==================================
55     /home/sojkam1/.ssh/id_rsa.pub will be imported
56     
57     Server status
58     =============
59     Last import run on Fri Mar 21 20:00:34 CET 2014
60     /home/sojkam1/.ssh/id_rsa.pub imported
61
62 Doporučujeme, abyste si klíč **zašifrovali heslem** (enter a
63 passphrase), protože pak nebude moct být váš soukromý klíč zneužit
64 lidmi, kteří mají přístup k datům na serveru (administrátoři atd.).
65 Pokud tak učiníte, může se vám hodit příkaz `ssh-add`, kterým klíč
66 rozšifrujete v paměti svého počítače a až do vašeho odlogování heslo
67 nebudete muset zadávat.
68
69 ## SSH agent na serveru postel
70
71 Hesla v paměti udržuje služba `ssh-agent`, která běží na počítačích
72 v laboratořích (a i na většině běžných GNU/Linux distribucí) pro každé
73 lokální sezení. K této službě se pro vložení klíče připojuje program
74 `ssh-add` stejně jako si příkazy `ssh` (i při použití SSH protokolu
75 v `git`u) si nechají touto službou podepisovat autentikační tokeny
76 privátním klíčem.
77
78 Na serveru `postel` není automaticky pro vzdálená sezení `ssh-agent` spuštěn.
79 Je potřeba si ho pustit, zajistit nastavení proměnných prostředí `SSH_AGENT_PID`
80 a `SSH_AGENT_SOCKET`. Toho lze docílit příkazem:
81
82     eval $(ssh-agent)
83
84 Při odhlášení je vhodné agenta ukončit příkazem `kill $SSH_AGENT_PID`,
85 případně `killall ssh-agent`.
86
87 Případně je možné agenta pustit na svém lokálním počítači a zajistit
88 přeposílání požadavků na podpisy ze vzdáleného sezení na lokální
89 počítač. Přeposílání se povolí nastavením přepínače `-A` při volání
90 SSH.
91
92     ssh -A uzivatel@postel.felk.cvut.cz
93