Jak provozovat GIT na NAS serveru (nebo i jinde)

Máte nějaký ten NAS disk (s Linuxovým jádrem) a chcete na něm provozovat GIT server? Zpravidla to není problém, jen je potřeba vědět, co a jak nastavit.
Nebo NAS ani jiný server nemáte, ale chcete i přesto provozovat vlastní GIT repozitáře? Přijde vám GitHub pro vaše pokusné prográmky jako „Dělo na komáry“ a vy nechcete dělat „z komárů velbloudy“?

NAS = Network Attached Storage (Úložný prostor připojený do sítě; zjednodušeně Síťový disk)

GIT = verzovací systém v současné době používaný pro většinu open source (ale i komerčních) projektů

GitHub = veřejný prostor pro ukládání GIT repozitářů; jeho nastavení je zpravidla stejně obtížné jako vytvoření vlastního repozitáře 😉

Poznámka: Některé zde uvedené údaje se mohou přímo vztahovat ke konkrétnímu prostředí (hardware a programy), kterým je: Windows, Synology NAS, GitExtensions a WinSCP. I když by většina postupů měla být podobná, může se v konkrétních případech dost lišit.

Instalace serveru?

První, co vás nejspíše napadlo, pokud jste někdy přemýšleli o tom, jak na svůj NAS dostat GITové úložiště, bylo „Jak do (Linuxového systému) NAS disku nainstaluji GIT server?

Otázka je to správná, ale odpověď není „Instalaci GIT serveru provedete takto:“, ale odpověď je „To nejde!!!„. Háček je v tom, že GIT vlastně žádný server nemá. GIT je totiž distribuovaný systém (podobně jako např. P2P) a tudíž všechny jeho části se chovají jako klienti.

Update: Synology NAS (DSM) nyní obsahují balíček GIT, který si můžete nainstalovat. Jeho popis je v článku Synology GIT.

Jak je tedy možné přesouvat (PUSHovat) změny z jednoho repozitáře do jiného, ptáte se? To díky tomu, že GIT používá přímí přístup na (vzdálený) disk. To je možné několika způsoby, obecně doporučený je použití SSH (které je standardní součástí UNIXových systémů jako je Linux a MacOS), ale stejně dobře můžete použít i SAMBU (která je standardní součástí Windows a též většiny NAS disků; Pozn.: Pokud vám jméno SAMBA nic neříká, tak jde o standardní „sdílení adresářů“ z Windows, SAMBA je pouze protokol pro jeho přenos mezi počítači – podobně jako HTTP je protokol pro přenos WWW stránek, resp. HTML souborů).

Lokální GIT repozitář

První krok by mělo být zprovoznit si GIT na svém počítači (předpokládejme Windows XP nebo novější). Díky tomu, že GIT nemá žádný server to můžete bez problémů udělat a vlastně můžete GIT provozovat i takto bez potřeby NAS (nebo jakéhokoliv jiného) serveru.

Pro správu GIT repozotáře pod Windows doporučuji použít program GitExtensions; alternativně můžete použít třeba TortoiseGIT, nebo nějaký integrovaný do vývojářského prostředí, např. Eclipse, NetBeans, Visual Studio, apod. Já budu předpokládat GitExtensions, protože ten podle mě nejpřehledněji zobrazuje obsah repozitáře (tedy jeho historii) a navíc pěkně řeší otravnou vlastnost GIT nejprve soubory připravit (INDEXovat) a pak teprve COMMITnout.

Program standardně nainstalujeme a spustíme (v případě TortoiseGit spustíme Průzkumníka Windows, do kterého je integrován). Teď můžeme vytvořit nový repozitář – u nejnovějších GitExtensions stačí na hlavní obrazovce najít příkaz Create new repository (pokud je již otevřen jiný repozitář, nejprve zvolte z menu File – Close).

Zadejte cestu ke složce (doporučeno k prázdné nebo neexistující), např. „c:\git\mujRepozitar“, zaškrtněte „Personal“ a zvolte Initialize. Tím se vytvoří nový repozitář. Díky tomu, že jste zvolili Personal, můžete do repozitáře COMMITovat, přepínat větve, prohlížet soubory atd. (Druhá možnost „Bare“ vytvoří základní repozitář, do kterého je možné pouze PUSHovat.) Nyní již můžete do složky repozitáře nahrát nějaké soubory (nebo je tam vytvořit či uložit) a následně můžete provést svůj první COMMIT. Váš vlastní GIT repozitář je na světě.

Záložní repozitář

Pokud chcete vytvořit záložní repozitář (pro případ, že se vám právě vytvořený poškodí), ale nechcete se zabývat složitým nastavováním NAS serveru, SSH přístupu apod., úplně vám postačí Windows.

  • Můžete použít běžnou složku na jiném disku (nebo na stejném, ale tam je zabezpečení proti poškození minimální).
  • Můžete uložit repozitář na externí disk, FLASH disk, atd. (Pozor ale na to, že GIT repozitář může mít záhy stovky MB nebo i GB – stará 256MB FLASHka tedy asi nebude to pravé.)
  • Můžete vytvořit repozitář ve sdílené složce na jiném počítači nebo dokonce na NAS disku.

Vytvoření repozitáře

Pro vytvoření repozitáře opět spusťte GitExtensions (resp. to co používáte) a zvolte příkaz Create new repository. Nyní zadejde adresu pro záložní repozitář, např. „E:\backup\mujRepozitar.git“ nebo „\\mujNAS\dokumenty\git\mujRepozitar“, zvolte možnost „Bare“ (někdy též „Create central repository“) a klikněte na Initialize.

Pozn.: Obecné doporučení je dávat (veřejným) složkám s GITovými repozitáři příponu *.git, aby bylo jasné, co v ní máme čekat. Osobně bych to trochu upravil: dejte složce příponu *.git v případě, že z její celé cesty není na první pohled jasné, že jde o GIT; např. u adresy „\\gitServer\repositories\git\project.git“ je evidentně identifikace příponou naprosto zbytečná (a spíše adresu znepřehledňuje); na druhou stranu u výše uvedené zálohy na disku E je to dost dobrý nápad si adresář označit.

Pokud se nyní podíváte do vytvořeného záložního repozitáře, uvidíte v něm řadu připravených složek, které budou později použity pro ukládání COMMITů, komentářů, apod. U Personal repozitáře jsou tyto složky také, ale jsou umístěny ve skryté složce „.git“ (ano, jde skutečně – z pohledu Windows – pouze o příponu; to proto, že tímto způsobem se v UNIXu označují skryté soubory). Záložní repozitář můžete také otevřít v GitExtensions a prohlédnou si historii (později, až tak nějaké bude). Jistě si ale všimnete, že v GUI není možnost pro COMMIT (příp. pokus o něj skončí nějakou chybou nebo hláškou ve smyslu „nemáte pracovní adresář“).

Záloha repozitáře

Teď je potřeba svůj (Personal) repozitář navázat na ten záložní a PUSHnout do něj soubory. Otevřete tedy lokální (Personal) repozitář (a ujistěte se, že v něm je alespoň jeden COMMIT). V GitExtensions zvolte z menu Remotes – Manage remote repositories (nebo jednoduše zvolte PUSH a klikněte na Manage remotes) a dostanete se do editoru „spřátelených“ repozitářů – všechny zde uvedené repozitáře by měli obsahovat totéž (tedy kopie jednoho repozitáře). Do kolonky Name zadejte nějaké jméno (slouží pouze pro vaši potřebu – zde bych doporučil jméno „backup“ nebo česky „zaloha“) a do URL zadejte (celou) cestu k záložnímu repozitáři. Kolonky pro SSH (Private key) nechte prázdné – teď pracujete s Windows adresáři a ty to nepotřebují. Nakonec klikněte na Save a Close.

Nyní již můžete zvolit PUSH a v seznamu Remote vybrat právě zadaný repozitář. Nyní zpravidla stačí kliknout na PUSH (pokud víte proč, můžete změnit další nastavení). Pokud jde o první PUSHování, nejspíše na vás vyskočí několik dotazů ohledně nové BRANCHe a propojení větví. Stačí všechny potvrdit Ano.

Pozn.: Propojení větví určuje, že pokud budete pushovat z lokální větve, klient automaticky zvolí stejnou větev na vzdáleném repozitáři. Pokud propojení nepovolíte, budete muset při každém PUSHi zvolit do jaké vzdálené větve se má PUSHnout. To může v určitých případech být užitečné, ale většinou to nevyužijete.

Pokud se v následujícím okně na závěr objeví zelená ikonka (případně text, SUCCESS, DONE nebo FINISHED), úspěšně jste vytvořili zálohu repozitáře. Tu můžete nyní aktualizovat příkatem PUSH stejně jako teď.

Z tohoto příkladu je vidět, že pro zálohování GITových repozitářů není potřeba nějaký externí zálohovací program. Stačí na několika místech vytvořit nové záložní repozitáře a napsat skriptík (BATCH, BASH, apod.), který bude mezi repozitáři provádět pravidelné PUSHe (nebo PULLy, podle toho z jaké strany to bude provádět).

Centrální repozitář na NAS

Teď si konečně ukážeme, jak dostat repozitář na NAS se všemy „vymoženostmi“ a zabezpečeními. Nyní máme sice záložní repozitář (možná i na NAS disku), ale k němu může přistupovat z Windows kdokoliv (pokud váš NAS nepodporuje přihlašování z Windows), ale naopak z Linuxu a MacOS je to dost problematické (pro začátečníky je problém to nastavit, pro odborníky nehoráznost to takhle používat :).

Zapnutí SSH

Jak už jsem psal, žádný GIT server neexistuje prostě proto, že GIT využívá v UNIXovém prostředí přístup přes SSH (Windowsová obdoba je Terminál). U většiny NAS disků s Linuxovým firmwarem je SSH již nainstalováno a stačí ho zapnout (a poté nastavit); pokud ne, zkuste zahledat na stránkách výrobce, zda se nedá nějak doinstalovat třeba přes balíky nebo upgrade – bez SSH se totiž Linux špatně spravuje a i pro výrobce by to byl problém.

Např. u Synology disků stačí upgradovat firmware na verzi DMS 4.1 a následně v Ovládacích panelech pod Síťové služby – Terminál zapnout podporu SSH. Nadále budu při konfiguraci NAS používat pojmi z Synology DMS.

Uživatelé GITu

Teď je potřeba vytvořit uživatele (zpravidla je to možné přes webovou administraci), kteří budou mít přístup ke GIT repozitáři (doporučení je ostatním uživatelům přístup zakázat). Pokud to váš NAS umožňuje, je nejlepší vytvořit Skupinu uživatelů „GIT“, která bude mít přístup do repozitářů (a běžní „Users“ nikoliv). Následně vytvořte uživatele, kteří mají mít přístup a přidělte jim práva skupiny GIT (u existujících uživatelů pouze přidejte skupinu GIT).

U Synology (a jiných) NAS je ještě potřeba povolit „domovské složky“. To provedete v Ovládacích panelech pod Oprávnění – Uživatel pod tlačítkem Domovská složka (Home directory) nebo Složka uživatele (User home nebo User directory) – záleží na verzi a překladu firmwaru.

Teď bude potřeba se k NAS připojit SSH a provádět změny přímo na serveru (většina NAS totiž tyto změny neumožňuje provádět přes webovou administraci ani přes Windows adresáře). K připojení doporučuji použít WinSCP, které je pro začátečníky v Linuxu nejlepší; pokud máte nějaké zkušenosti Linuxovými příkazy, postačíte si i s PuTTY nebo jiným programem.

Doporučuji použít přenosnou verzi z PortableApps.com – tu nemusíte instalovat a můžete ji např. uložit přímo na NAS disk.

Po spuštění WinSCP zadejte adresu síťovou NAS serveru (např. „192.168.1.200“ nebo „mujNAS“), ověřte správnost hodnot port = 22 a protocol = SCP. Jako User name zadejte „root“ (to je důležité pro linux) a jako heslo zadejte heslo uživatele „Admin“ (Administrator z webové administrace – většina NAS používá toto provázání). Kolonku Private key nechte prázdnou. Klikněte na Save a (pokud chcete) zaškrtněte „Save password“ (uložit heslo). Nyní klikněte na Login a dostanete se do „root“ složky na NAS disku. Pozn.: to že se složka jmenuje root neznamená, že je to kořenová složka a všechny ostatní složky jsou v ní; zpravidla musíte z root složky vyskočit o úroveň výš, abyste byli ve skutečném ROOTu disku – tedy ve složce „/“.

Teď je potřeba umožnit uživatelům ze skupiny GIT přihlašovat se pomocí SSH (většinou je SSH povolenou právě pouze pro uživatele „root“). U Linuxu to zpravidla zajišťuje soubor „/etc/passwd“ (v kořenové složce tedy najdetě složku „etc“ a v ní soubor „passwd“). Soubor otevřete pro editaci (ve WinSCP klávesa F4) nebo ho stáhněte na lokální disk a zeditujte (pak ho nezapomeňte nahrát zpět).

Soubor bude nejspíše obsahovat řádky vypadající takto: admin:x:1024:100:System default user:/var/homes/admin:/bin/sh kde jednotlivé položky oddělené dvojtečnou jsou (mimo jiné) jméno uživatele, jeho ID (zde 1024) a popis; poslední dva údaje jsou jeho domovský adresář (do něj se dostane po přihlášení) a výchozí příkazový program (viz dále).

Vy potřebujete najít uživatele, který má mít možnost se přes SSH přihlásit, a změnit jeho příkazový program. Ve výchozím nastavení je většinou uveden jako „/sbin/nologin“, což znamená, že i když se tento uživatel přihlásí, okamžitě bude připojení ukončeno. Aby se uživatel dostal do příkazové řádky, je potřeba změnit hodnotu na „bin/sh“, „bin/ash“ nebo „bin/bash“ (zpravidla je to jedno, ale záleží na verzi Linuxu, kterou z možností podporuje). Také můžete změnit domovský adresář, pokud má mít uživatel defaultně přístup právě do GITu (např. změnou „/var/homes/user/“ na „/mnt/volume1/git/“). Domovský adresář je složka, do které se dostane uživatel po přihlášení; to může být zvláště výhodné v případě, pokud si chcete vytvořit speciálního uživatele, který bude spravovat (vytvářet) repozitáře přes SSH.

Vytvoření složky repozitáře

Teď máme uživatele a potřebujeme vytvořit složku pro repozitáře s příslušnými právy. ve WinSCP tedy přejdete do složky, kde mají být umístěny repozitáře (zpravidla to je „/mnt/volumeX“ nebo „/volumeX“, kde X je číslo disku v NAS). Můžete vytvořit novou složku „git“ nebo „repositories“, nebo použít existující složku (např. u Synology je potřeba složky vytvářet přes webové rozhraní, aby o nich systém věděl). Teď vyskočte o úroveň výš, kliknětene na složku pro repozitáře pravým tlačítkem a zvolte Properties (u PuTTY použijte příslušné Linuxové příkazy).

Nastavte Group na „GIT“ (tedy skupina uživatelů, kteří mají právo přistupovat do GITu), hodnotu Owner (majitel) můžete nechat na „root“ nebo zadat jméno jednoho z uživatelů GITu (pravidla ten, kdo má hlavní právo spravovat repozitáře). Kolonky Permisions nastavte tak, aby u Owner a Group byly zvoleny R, W a X, zatímco u Others (někdy též World) nebylo zaškrtnuto nic (případně jen R, pokud chcete nechat repozitáře volně přístupné pro čtení) – Výsledný oktalový kód by měl vypadat „0770“. Pozn.: Alternativně můžete použít i práva 0760 nebo 0660, protože z repozitářů by nemělo být potřeba něco spouštět).

Nyní skočte opět do složky a vytvořte novou složku pro repozitář (pro každý projekt se doporučuje jeden repozitář, aby se vám projekty nepletly do sebe). Následně jí musíte nastavit práva stejně jako v předchozím případě – tedy Group na „GIT“ a práva na „0770“.

Pokud chcete nechat možnost vytvářet nové repozitáře pouze jednomu uživateli, změňte práva pro hlavní složku na „0700“ – tedy seberete jakákoliv práva i pro Group. Následně ale musí tato práva zase přiřadit jednotlivým podsložkám s repozitáři. Nezapomeňte pak nastavit správného uživatele do kolonky Owner! Také nezapomeňte, že u vnořených složek musí být práva pro Group zachována!.

Vytvoření centrálního repozitáře

Teď máme složku pro repozitář, ale zatím je prázdná (žádný repozitář v ní není). To můžeme provést dvěma způsoby.

První je složitější a vyžaduje instalaci GITového klienta do Linuxového firmwaru – což je možné ale zbytečně nákladné (např. pro Synology můžete použít tento návod na BlueVariant). Jen pro úplnost uvedu, jak ho použít. Ve WinSCP (nebo PuTTY) přejděte do složky repozitáře a zvolte z menu Commands – Open terminal (nebo stiskněte CTRL+T). Zadejte příkat git --bare init (pozor na to, že před „bare“ jsou 2 pomlčky!) a potvrďte. Odpověď „Initialized empty Git repository“ znamená, že GIT máte správně nainstalovaný a že se repozitář vytvořil.

Druhá možnost je jednodušší a nevyžaduje zásah do firmwaru disku. Jednoduše spočívá v tom, že repozitář (Bare – stejně jako výše u Záložního repozitáře) vytvoříte buď na lokálním disku a pak ho na NAS přesunete (např. přes WinSCP) nebo ho rovnou vytvoříte na NAS (pokud je jeho složka přístupná přes sdílení složek).

V každém případě je nakonec ještě potřeba ověřit, že všechny složky uvnitř repozitáře mají správná práva – tedy (stejně jako výše) Group nastaveno na „GIT“ a práva na „0770“. Pokud ne, otevřete nastavení složky repozitáře a zaškrtněte „Set group, owner and permissions recursively“ (nastav práva pro vnořené složky) a potvrďte OK

PUSH do centrálního repozitáře

Nyní již můžete do repozitáře PUSHovat. Stejně jako u záložního ho musíte nejprve nastavit do Remotes. Jméno pro centrální (hlavní) repozitář je doporučeno „origin“, ale jak už jsem psal, je to jméno pouze pro vaši potřebu (do samotného repozitáře se neukládá).

Problém nyní bude s adresou, ve které je potřeba specifikovat, že přihlašování bude probíhat přes SSH. Adresa tedy musí být ve tvaru ssh://[uzivatel]@[server]/[cesta]/[repozitar]. Předpona „ssh://“ říká, že se má použít protokol SSH a za ní je uvedeno jméno uživatele, pod kterým se chcete přihlásit. Za zavináčem pak následuje už celkem logická část, kde určíte adresu serveru, cestu k repozitáři a jméno samotného repozitáře.

Poznámka: GitExtensions taktéž podporuje formát adresy ssh://[uzivatel]@[domena]:[server]/[cesta]/[repozitar], ale tu nejspíše nebudete potřebovat. Ostatní klienti tento formát většinou neznají nebo mají jiný.

Příklad adresy centrálního repozitáře (uloženého na 3. disku serveru „gitNAS“, uživatel se jmenuje „gitUser“):
ssh://gitUser@gitNAS/volume3/git/test

Pokud je GIT nastaven jako domovský adresář uživatelů lze ho nahradit „~“:
ssh://gitUser@gitNAS/~/test

Nakonec zvolte Save a Close a můžete zkusit PUSH.

Nyní ale narazíte na jeden problém a tím je, že při každém PUSHi musíte zadat své heslo (resp. heslo uživatele zadaného v SSH adrese). Navíc přístup přes heslo není považován za nějak extra bezpečný (hesla typu „12345“ – která jsou tím častější, čím častěji nutíte uživatele heslo zadávat a/nebo měnit).

Přihlášení SSH pomocí klíče

Aby uživatelé nemuseli stále zadávat heslo při každém PUSHi a PULLu, můžete jim to usnadnit pomocí klíče.

Vygenerování klíče

Každý uživatel potřebude svůj vlastní Veřejní a Privátní klíč (které k sobě patří!). Ten můžete buď získat od nějaké Autority (rozuměj musíte si ho koupit) nebo si ho můžete sami vytvořit. K tomu potřebujete program PuTTY (zpravidla je součástí GITového klienta – např. u GitExtensions ho najdete v instalační složce v podadresáři PuTTY), resp. jeho součást „puttygen“. Tento prográmek spusťte (v GitExtensiosn ho najdete v menu Remotes – PuTTy – Generate or import key) a v dolní části zvolne úroveň zabezpeční (doporučeno SSH-2 RSA a velikost minimálně 2048). Klikněte na Generate – zobrazí se jezdec („teploměr“), který se ale nebude hýbat. Nyní musíte přes jezdec přejíždět myší, dokud se zcela nenaplní (po naplnění pojede ještě jednou – to již zpracovává váš vstup a generuje klíče).

Toto je (v současné době) uznávaný způsob vytvoření zcela náhodného – a tudíž i zcela bezpečného – klíče. Totiž, i když počítače obsahují generátory náhodných čísel, stále jde pouze o tzn. „pseudo-náhodné“ číslo, které je založené na matematických výpočtech vycházejících z kontrukce procesoru, aktuálního času (resp. času spuštění počítače), předcházejích vygenerovaných čísel apod. (pokud tedy někdo bude znát všechny tyto proměnné, může zpětně zjistit, jak byl klíč vytvořen). Naproti tomu pohyb myší člověkem je zcela nezávislé na konktréním počítači a dá se tvrdit, že nikdo již nedokáže zopakovat stejný pohyb. Tudíž platí, že čím rychlejší a neuspořádanější pohyb bude, tím bude následný klíč bezpečněší – zopakovat pohyb zleva doprava je snadnější než nějaký náhodná pohyb sem a tam.

Nyní již máte klíč vygenerovaný a je potřeba ho uložit. Klikněte tedy na tlačítko Save private key a uložte si ho na nějaké bezpečné místo (např. FLASH klíčenka, kterou nosíte s sebou; zašifrovaná složka ve vašich Dokumentech, apod.). Důležité je, že privátní klíč nesmíte nikomu dát!!!. Naopak Veřejný klíč se jmenuje veřejný právě proto, že je veřejný (pokud to není jasné, tak ten můžete dát komu chcete – neobsahuje nic tajného a k ničemu nebude).

Veřejný klíč můžete uložit tlačítkem Save public key, ale v tomto formátu ho momentálně nepotřebujete (Navíc veřejný klíč můžete kdykoliv znovu vygenerovat z privátního klíče tlačítkem Load). Místo toho vyberze myší obsah horního pole Public key a zkopírujte ho do schránky. Celý text musí vypadat ssh-rsa ABC... změť znaků klíče ...XYZ== MyGitKey kde text ssh-rsa určuje typ, pak následuje samotný klíč (reprezentpovaný čitelnými znaky) zakončený dvěma znaky rovnítka a mezerou „== „; cokoliv za tím je pouze komentář a lze libovolně měnit (je doufám jasné, že obsah klíče se změnit nesmí, protože by přestal fungovat).

Pokud požadujete lepší zabezpeční, můžete v programu puttygen do kolonky Key passphrase zadat heslo (a zopakovat ho v Confirm passphrase) a následně kliknout na Save private key pro uložení zaheslovaného klíče. Možná si říkáte, že tím jste nic nezískali oproti možnosti při každém PUSHi a PULLu zadat své heslo, ale k tomu slouží další součást PuTTy jménem „pagent“ (PuTTy Agent, v GitExtensions je v menu Remotes – PuTTy – Start authentication agent), který se vás na heslo zeptá pouze při prvním načtení privátního klíče a následně bude stejné heslo používat při každém použití klíče (až do jeho uvolnění nebo restartu PC).

Uložení klíče na server

Teď musíte svůj veřejný klíč nahrát do svého domovského adresáře na NAS disku. Přihlašte se tedy přes WinSCP (buď jako root nebo jako konkrétní uživatel). Jděte do domovské složky uživatele (pokud jste se přihlásili jako root; jinak tam budete hned po přihlášení) a vytvořte složku „.ssh“ (pokud neexistuje; pro uživatele Windows může být toto jméno matoucí a navíc ani nejde ve Windows vytvořit, ale jak už jsem psal, v UNIXu je toto označení skryté složky). Otevřete vlastnosti složky a nastavte Owner na jméno příslušného uživatele (pokud jste přihlášen jako root) a práva nastavte na „0700“ (tedy pouze Owner má všechna práva).

Složku otevřete a vytvořte v ní soubor „authorized_keys“ (opět pokud již neexistuje; některé verze Linuxu mohou vyžadovat jiné jméno). Soubor otevřete pro editaci a vložte do něj veřejný klíč z „puttygen“ přesně ve formátu uvedeném výše. Klíč by měl být na jeden řádek (i když v puttygen zabírá několik řádků – to je ale pouze zalomen do okna programu). Soubor „authorized_keys“ totiž může obsahovat více klíčů uvedených každý na samostatné řádce. Díky tomu můžete např. nastavit uživatelům domovský adresář na složku s GIT repozitáři a v ní uložit veřejné klíče všech uživatelů GITu – pak ale musíte správně nastavit práva vč. Owner a Group!

Nastavení klíče pro přihlášení

Nyní spusťte GitExtensions a otevřete Remotes – Manage remote repositories, klikněte na „origin“ (nebo jak jste ho nazvali) a klikněte na Browse u nastavení Private key file nebo zadejte adresu souboru (který je doufám uložen na bezpečném místě ;). Klikněte na Load SSH key a nakonec Save a Close.

Nyní zkuste provést PULL nebo PUSH. Při prvním pokusu pravděpodobně vyskočí konzolové okno s varováním, že se pokoušíte přihlásit k neznámému serveru. Stiskem klávesy „y“ tedy potvrďte, že se chcete k serveru přihlásit. Následně se vám pravděpodobně konzole zeptá na zadání hesla, ale to již není potřeba a okno konzole můžete zavřít. Při opakovaném pokusu o PULL nebo PUSH by již mělo vše proběhnout bez dotazů a zdržování.

Pokud se vám i nadále nedaří přihlásit se pomocí klíče, zkontrolujte, že veřejný klíč je správně nahrán na serveru v souboru „.ssh/authorized_keys“ (Je opravdu v domovské složce? Má soubor správné jméno vč. velikosti písmen?!?) a že privátní klíč je správně uložen v Remotes repozitáře (někdy se stane, že klient ho neuloží nebo hodnotu vymaže pokud ho nenajde). Také můžete zkusit přihlásit se přímo k serveru přes SSH bez použití GITu. To provede prográmkem PuTTy (najdete v instalační složce GitExtensions).

Berte prosím na vědomí, že privátní klíč musíte zadat u každého Remote repozitáře, který hodláte používat – GitExtensions neumožňuje zadat „globální“ privátní klíč pro všechny repozitáře.

 

Závěr

Pokud máte problém s tímto návodem, GITem, SSH apod., nepiště prosím do komentářů, ale zašlete svůj dotaz na redakce(zavináč)nothrem.cz. Komentáře nejsou moderovány je dost pravděpodobné, že váš případný dotaz nebude nikdy zodpovězen (oproti emailu, kde mohu zpravidla odpovědět během několika minut ;).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..