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. 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
.
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
Ten vytvoří pár klíčů (veřejný a soukromý) a ve výchozím nastavení je uloží do správného adresáře pod správným jménem.
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 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
uzivatel@postel:~$ ls -l ~/.ssh
total 16
-rw------- 1 uzivatel users 1679 Mar 9 12:23 id_rsa
-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
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 svého počítače a až do vašeho odlogování heslo
nebudete muset zadávat.
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
. 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 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