]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/blob - cviceni/rtime-git-ssh-key.mdwn
More hints for setup and use of the SSH keys.
[edu/osp-wiki.git] / cviceni / rtime-git-ssh-key.mdwn
1 [[!meta title="Přístup ke git repozirářů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.
7
8 Server rtime automaticky importuje veřejné klíče z vašeho školního
9 home adresáře. Import probíhá každou celou hodinu a ve čtvrtek přes
10 den každých **5 minut**. Za SSH veřejný klíč jsou považovány soubory
11 odpovídající masce `~/.ssh/*.pub`.
12
13 Nejsnazší cesta jak si SSH klíč vytvořit je spustit na počítači v
14 laboratoři (či na serveru postel.felk.cvut.cz) příkaz
15
16     ssh-keygen
17     
18 Ten vytvoří pár klíčů (veřejný a soukromý) a ve výchozím nastavení je
19 uloží do správného adresáře pod správným jménem. 
20
21 Pokud veřejný klíč kopírujete do svého domovského adresáře z jiného
22 počítače, je nezbytně nutné, aby byla správně nastavena práva k vašemu
23 adresáři s SSH daty. Do adresáře nesmí mít přístup nikdo jiný než vlastník.
24 K privátnímu klíči (ten bez `*.pub`) nesmí mít ostatní uživatelé
25 a také žádný přístup a k veřejnému klíči by naopak měla být práva
26 pro čtení nastavena pro všechny.
27
28     uzivatel@postel:~$ ls -ld ~/.ssh
29     drwx------ 2 uzivatel users 136 Mar  9 12:23 /home/pisa/.ssh
30     
31     uzivatel@postel:~$ ls -l ~/.ssh
32     total 16
33     -rw------- 1 uzivatel users 1679 Mar  9 12:23 id_rsa
34     -rw-r--r-- 1 uzivatel users  393 Mar  9 12:23 id_rsa.pub
35     -rw-r--r-- 1 uzivatel users 4272 Dec  7 09:39 known_hosts
36
37 Pro kontrolu správnosti vygenerování a práv ke klíčům je přidaný na systém
38 skript `check-ssh-key`, který upozorní na případné problémy a vypíše,
39 které klíče by mechanizmus synchronizace měl na server `rtime` měl
40 překopírovat. Pokud je problém s právy k souborům a adresáři,
41 prostudujte příkaz `man chmod`.
42
43 Doporučujeme, abyste si klíč **zašifrovali heslem** (enter a
44 passphrase), protože pak nebude moct být váš soukromý klíč zneužit
45 lidmi, kteří mají přístup k datům na serveru (administrátoři atd.).
46 Pokud tak učiníte, může se vám hodit příkaz `ssh-add`, kterým klíč
47 rozšifrujete v paměti vašeho počítače a až do vašeho odlogování heslo
48 nebudete muset zadávat.
49
50 Vlastní hesla v paměti si udržuje služba `ssh-agent`, která nastartovaná
51 na počítačích v laboratořích (a i většině beěných GNU/Linux distribucí)
52 pro každé lokální sezení. K této službě se pro vložení klíče připojuje
53 program `ssh-add` stejně jako si příkazy `ssh` (i při použití SSH protokolu v `git`u)
54 si nechají touto službou podepisovat autentikační tokeny privátním klíčem.
55
56 Na serveru `postel` není automaticky pro vzdálená sezení `ssh-agent` spuštěn.
57 Je potřeba si ho pustit, zajistit nastavení proměnných prostředí `SSH_AGENT_PID`
58 a `SSH_AGENT_SOCKET` a při odhlášení agenta ukončit příkazem `kill $SSH_AGENT_PID`
59 případně `killall ssh-agent`.
60
61 Případně je možné agenta pustit na svém počítači lokálně zajistit přeposílání
62 požadavků na podpisy ze vzdáleného sezení na svůj počítač. Přeposílání se povolí
63 nastavením přepínače `-A` při volání SSH.
64
65     ssh -A uzivatel@postel.felk.cvut.cz
66