[[!comment format=mdwn username="dendimar" ip="147.32.98.182" subject="Jak vyzrát na Permission denied (publickey) při akci: git fetch osp" date="2014-03-20T23:13:33Z" content=""" Méně zkušenější uživatelé Linuxu (jako třeba já) se možná potýkali / potýkají s problémem při provedení příkazu # sudo git fetch osp kdy obdrží hlášku Permission denied (publickey). A to i v případě, že jim v pořádku prochází příkaz # ssh git@rtime.felk.cvut.cz info Je to způsobeno tím, že při použití magického slůvka `sudo` se jakoby přepnete na chvíli do účtu root. Vámi vygenerovaný ssh klíč je tedy potřeba nakopírovat ještě do adresáře `/root/.ssh/` (obdoba toho v `/home/user/.shh/`, ale pro účet root). Poté by již s provedením příkazu # sudo git fetch osp neměl být žádný problém. ---------- Pokud ale stále tápete, nebo Vám něco stále nefunguje, postupujte dle tohoto návodu: (Návod předpokládá, že se snažíte připojit k `git@rtime.felk.cvut.cz/osp/mc` z Vašeho vlastního stroje, nikoliv ze stanice v učebně s109) 1. Připojte se k Vašemu účtu na `postel.felk.cvut.cz` # ssh -A uzivatel@postel.felk.cvut.cz Slovo `uzivatel` nahraďte Vašim loginem, kterým se připojujete na stanici v učebně s109. Následně budete vyzvání k zadání hesla. 2. Vygenerujte SSH klíč # ssh-keygen Lokaci a název klíče raději nechte jak je, pokud opravdu nepotřebujete měnit. Dále se doporučuje zadat nějaké heslo, pokud jste ale líní jako já, a nechcete při každém připojení zadávat heslo, heslo nevyplňujte a prostě 2x zmáčkněte Enter, načež se Vám vygenerují ve složce `~/.ssh` 2 nové soubory (Veřejný a privátní SSH klíč). Po vygenerování klíče doporučuji provést tento příkaz (Nevím, zdali je to nutné, ale klíč se mi aktualizoval až poté, co jsem spustil tento příkaz) # eval $(ssh-agent) Informaci, zda server načetl již nový klíč získáme pomocí příkazu # check-ssh-key Mezitím, než server aktualizuje seznam nových klíčů se můžeme odhlásit příkazem # exit 3. Zkopírování nových klíčů na vlastní stroj Pro zkopírování vygenerovaných SSH klíčů ze serveru `postel.felk.cvut.cz` jsem využil nástroje `sshfs`, v případě, že jej nemáte, lze jednoduše doinstalovat například pomocí # sudo apt-get install sshfs Tento šikovný nástroj nedělá nic jiného, než že \"namountuje\" (propojí) Vámi vybraný adresář na disku s nějakým adresářem na serveru `postel.felk.cvut.cz`. Nejdříve vytvoříme přípojný adresář, který propojíme se serverem. # mkdir /home/user/postel Dále provedeme propojení se serverem `postel.felk.cvut.cz` # sshfs uzivatel@postel.felk.cvut.cz: /home/user/postel/ Po přípojení můžeme provést zkopírování vygenerovaných SSH klíčů # cp -a /home/user/postel/.ssh/. /home/user/.ssh/. # cp -a /home/user/.ssh/. /root/.ssh/. Nyní se už můžete odpojit a smazat mountpoint # sudo fusermount -u /home/user/postel # rm -r /home/user/postel 4) Jestli Vám ani teď nebude fungovat příkaz # sudo git fetch osp Tak už Vám není pomoci XD """]]