Přístup se děje protokolem SSH (*ssh://git@rtime.felk.cvut.cz/...*) a
uživatelé jsou autorizováni výhradně pomocí SSH klíčů. Hláška
"*Permission denied (publickey).*" znamená, že nemáte SSH klíče
-správně nastaveny.
+správně nastaveny. Otestovat přístup si můžete příkazem
+
+ ssh git@rtime.felk.cvut.cz info
Server rtime automaticky importuje veřejné klíče z vašeho školního
home adresáře. Import probíhá každou celou hodinu a ve čtvrtek přes
den každých **5 minut**. Za SSH veřejný klíč jsou považovány soubory
odpovídající masce `~/.ssh/*.pub`.
-Nejsnazší cesta jak si SSH klíč vytvořit je spustit na počítači v
-laboratoři (či na serveru postel.felk.cvut.cz) příkaz
+## Generování klíčů
+
+Nejsnazší cesta jak si SSH klíč vytvořit je spustit na počítači
+v laboratoři (či na serveru postel.felk.cvut.cz) příkaz
ssh-keygen
Pokud veřejný klíč kopírujete do svého domovského adresáře z jiného
počítače, je nezbytně nutné, aby byla správně nastavena práva k vašemu
-adresáři s SSH daty. Do adresáře nesmí mít přístup nikdo jiný než vlastník.
-K privátnímu klíči (ten bez `*.pub`) nesmí mít ostatní uživatelé
-A také žádný přístup a k veřejnému klíči by naopak měla být práva
-pro čtení nastavena pro všechny.
+adresáři s SSH daty. Do adresáře nesmí mít přístup nikdo jiný než
+vlastník. K privátnímu klíči (ten bez `*.pub`) nesmí mít přístup
+ostatní uživatelé. K veřejnému klíči by naopak měla být práva pro
+čtení nastavena pro všechny. Aktuálně nastavená práva si můžete
+zkontrolovat pomocí následujících příkazů:
uzivatel@postel:~$ ls -ld ~/.ssh
drwx------ 2 uzivatel users 136 Mar 9 12:23 /home/pisa/.ssh
-rw-r--r-- 1 uzivatel users 393 Mar 9 12:23 id_rsa.pub
-rw-r--r-- 1 uzivatel users 4272 Dec 7 09:39 known_hosts
-Pro kontrolu správnosti vygenerování a práv ke klíčům je přidaný na systém
-skript `check-ssh-key`, který upozorní na případné problémy a vypíše,
-které klíče by mechanizmus synchronizace měl na server `rtime` měl
-překopírovat. Pokud je problém s právy k souborům a adresáři,
-prostudujte příkaz `man chmod`.
+Zkontrolujte si vaše klíče příkazem
+
+ check-ssh-key
+
+Ten upozorní na případné problémy a vypíše, které klíče budou na
+server `rtime` automaticky importovány. Pokud máte problém s právy
+k souborům či adresářům, prostudujte si dokumentaci `man chmod`.
+
+Po úspěšném importu vašeho klíče by měl výstup příkazu `check-ssh-key`
+vypadat zhruba následovně:
+
+ Public keys in your home directory
+ ==================================
+ /home/sojkam1/.ssh/id_rsa.pub will be imported
+
+ Server status
+ =============
+ Last import run on Fri Mar 21 20:00:34 CET 2014
+ /home/sojkam1/.ssh/id_rsa.pub imported
Doporučujeme, abyste si klíč **zašifrovali heslem** (enter a
passphrase), protože pak nebude moct být váš soukromý klíč zneužit
lidmi, kteří mají přístup k datům na serveru (administrátoři atd.).
Pokud tak učiníte, může se vám hodit příkaz `ssh-add`, kterým klíč
-rozšifrujete v paměti vašeho počítače a až do vašeho odlogování heslo
+rozšifrujete v paměti svého počítače a až do vašeho odlogování heslo
nebudete muset zadávat.
-Vlastní hesla v paměti si udržuje služba `ssh-agent`, která nastartovaná
-na počítačích v laboratořích (a i většině běžných GNU/Linux distribucí)
-pro každé lokální sezení. K této službě se pro vložení klíče připojuje
-Program `ssh-add` stejně jako si příkazy `ssh` (i při použití SSH protokolu v `git`u)
-si nechají touto službou podepisovat autentikační tokeny privátním klíčem.
+## SSH agent na serveru postel
+
+Hesla v paměti udržuje služba `ssh-agent`, která běží na počítačích
+v laboratořích (a i na většině běžných GNU/Linux distribucí) pro každé
+lokální sezení. K této službě se pro vložení klíče připojuje program
+`ssh-add` stejně jako si příkazy `ssh` (i při použití SSH protokolu
+v `git`u) si nechají touto službou podepisovat autentizační tokeny
+privátním klíčem.
Na serveru `postel` není automaticky pro vzdálená sezení `ssh-agent` spuštěn.
Je potřeba si ho pustit, zajistit nastavení proměnných prostředí `SSH_AGENT_PID`
-a `SSH_AGENT_SOCKET` a při odhlášení agenta ukončit příkazem `kill $SSH_AGENT_PID`
+a `SSH_AGENT_SOCKET`. Toho lze docílit příkazem:
+
+ eval $(ssh-agent)
+
+Při odhlášení je vhodné agenta ukončit příkazem `kill $SSH_AGENT_PID`,
případně `killall ssh-agent`.
-Případně je možné agenta pustit na svém počítači lokálně zajistit přeposílání
-požadavků na podpisy ze vzdáleného sezení na svůj počítač. Přeposílání se povolí
-nastavením přepínače `-A` při volání SSH.
+Případně je možné agenta pustit na svém lokálním počítači a zajistit
+přeposílání požadavků na podpisy ze vzdáleného sezení na lokální
+počítač. Přeposílání se povolí nastavením přepínače `-A` při volání
+SSH.
ssh -A uzivatel@postel.felk.cvut.cz