Олакшавање приступа приватним GitHub репозиторијумима
Понављање идентичних радњи може бити исцрпљујуће и фрустрирајуће за програмере. Један од таквих задатака је интеракција са приватним GitHub репозиторијумима. Да ли вам је то познато? Вероватно тражите решење и наишли сте на овај чланак. Након што га прочитате, ваша потрага ће се завршити.
У овом тексту ћемо објаснити како да приступите приватним GitHub репозиторијумима без потребе за уношењем лозинке. Пређимо одмах на ствар.
Постоје два основна начина за приступ GitHub репозиторијумима: HTTPS и SSH. Већина корисника се ослања на HTTPS. Међутим, важно је знати да HTTPS није најефикаснији начин за клонирање приватних репозиторијума.
Приступ се односи на радње попут клонирања, пусховања, пуловања и свега што укључује ажурирање вашег локалног репозиторијума са удаљеним.
Приступ јавним репозиторијумима не представља проблем. Међутим, када је реч о приватним репозиторијумима, потребно је аутентификовати се. Постоји више начина да то урадите.
Почнимо са најчешћим приступом…
Коришћење HTTPS-а
Ако користите HTTPS метод, вероватно сте већ упознати са њим и тражите алтернативе. Хајде да брзо прођемо кроз процес приступа приватном репозиторијуму користећи HTTPS.
- Копирајте везу вашег приватног репозиторијума.
GitHub приватни репозиторијум
- Отворите терминал или командну линију на вашем рачунару.
- Укуцајте команду `git clone [веза]` да клонирате репозиторијум.
- Замените `[веза]` са везом вашег приватног репозиторијума.
- Систем ће затражити аутентификацију. Морате унети ваше GitHub акредитиве.
- Прво ће бити затражено да унесете ваше GitHub корисничко име. Унесите га и притисните Enter.
Корисничко име за аутентификацију
- Затим, потребно је да унесете лозинку. Унесите вашу GitHub лозинку и притисните Enter.
Лозинка за аутентификацију
То је то; успешно сте клонирали приватни репозиторијум користећи HTTPS метод. Сада, извршите неку промену у репозиторијуму, урезујте је и пусхујте.
Шта примећујете?
Опет се тражи аутентификација.
Пусх аутентификација
Зар није фрустрирајуће и мучно морати уносити акредитиве сваки пут када комуницирате са приватним репозиторијумом?
Апсолутно јесте.
Не можемо стално уносити наше GitHub акредитиве кад год треба да комуницирамо са нашим приватним репозиторијумом. То је процес који одузима време и успорава наш рад.
Постоји више начина да се реши овај проблем. Најбољи начин је коришћење SSH. Али, постоје и друге методе. Хајде да их погледамо једну по једну.
.gitconfig
Све информације о верзијама нашег репозиторијума се чувају у `.git` директоријуму, који је скривена фасцикла. Унутар ње се налази конфигурациона датотека која нам омогућава да прилагодимо подешавања. Међутим, генерално се не препоручује њено директно мењање.
Можемо да клонирамо приватни репозиторијум тако што ћемо убацити наше корисничко име и лозинку у URL репозиторијума, на следећи начин:
git clone https://<strong>корисничко_име:лозинка</strong>@github.com/<strong>корисничко_име</strong>/<strong>назив_репозиторијума</strong>.git
Измените `корисничко_име`, `лозинка` и `назив_репозиторијума` са одговарајућим детаљима. Пошто смо додали акредитиве у URL, неће тражити аутентификацију, као што смо раније видели.
Дакле, користићемо горе наведени метод аутентификације и у складу са тим изменити конфигурацију нашег репозиторијума. Погледајмо кораке за решавање проблема са понављањем аутентификације тако што ћемо променити URL.
- Отворите `.git` фасциклу унутар клонираног репозиторијума.
.git фасцикла
- Тамо ћете наћи датотеку под називом `config`. Отворите је помоћу било ког едитора текста.
- Унутар ње, наћи ћете линију са везом до вашег репозиторијума, на сличан начин:
Веза репозиторијума у конфигурацији
- Измените URL тако што ћете додати ваше корисничко име и лозинку, као што је приказано горе.
Измена URL адресе репозиторијума
Сада, поново извршите промену у репозиторијуму, урезујте је и пусхујте.
Да ли примећујете нешто?
Овог пута вас није питао за ваше GitHub акредитиве. Дакле, решили смо проблем ажурирањем подешавања нашег репозиторијума.
Можда сте приметили да ово није безбедно решење, јер излажемо наше акредитиве. Поред тога, овај метод неће функционисати ако ваша GitHub лозинка садржи знак `@`.
Дакле, постоје неки озбиљни недостаци коришћења овог метода. Због тога, прескочимо га и пређимо на следећи метод.
credential.helper
`credential.helper` нам омогућава да трајно сачувамо наше акредитиве у датотеци `~/.git-credentials`.
Када први пут унесете акредитиве, они ће бити сачувани. Када следећи пут покушате да приступите приватном репозиторијуму, систем вас неће тражити акредитиве све док су сачувани у датотеци `~/git-credentials`. Дакле, ово је један од начина да избегнемо наш проблем. Хајде да видимо како то ради у пракси, са прецизним корацима.
- Прво, морамо да активирамо опцију за чување акредитива помоћу команде `git config credential.helper store`.
- Након што активирате опцију, покушајте да приступите приватном репозиторијуму са вашим корисничким именом и лозинком.
- Када унесете ваше корисничко име и лозинку, систем ће их сачувати у датотеци `~/.git-credentials` са вашим GitHub акредитивима, на следећи начин:
git-credentials
Сада, поновите исти процес да бисте проверили да ли ради исправно. Измените, урезујте и пусхујте. Сигуран сам да вас неће тражити акредитиве, ако сте пратили горе наведене кораке за чување акредитива.
Иде добро…
Шта ако желите да сачувате акредитиве 4 сата, уместо заувек?
`credential.helper` пружа начин за привремено чување акредитива на одређено време. Уместо `store`, користимо `cache` за чување акредитива на ограничено време.
Кеш подразумевано чува акредитиве 15 минута. Након 15 минута, `git` ће поново тражити акредитиве. Међутим, можемо променити подразумевано време помоћу следеће команде:
git config credential.helper 'cache --timeout={време_у_секундама}'
Обавезно унесите време у секундама. Погледајмо како то ради у пракси.
- Прво, морамо да активирамо опцију за кеширање акредитива помоћу команде `git config credential.helper cache`.
- Приступите приватном репозиторијуму са вашим корисничким именом и лозинком.
- Када унесете ваше корисничко име и лозинку, систем ће кеширати ваше GitHub акредитиве за одређено време.
Сада, извршите измену, урезујте је и пусхујте. Опет, неће тражити ваше акредитиве, као што смо рекли да их кешира.
Приказали смо вам команде за рад са git иницијализованим репозиторијумом. Конфигурацију gita можемо ажурирати глобално, за све пројекте, додавањем `–global` заставице у горе наведене команде.
Лични токени за приступ
Лични токени за приступ се користе за давање приступа GitHub API-ју. Лични токени за приступ су слични OAuth токенима. Дакле, могу се користити за основну аутентификацију уместо лозинке за git. Можемо користити личне токене за приступ да решимо наш проблем.
Погледајмо како то урадити.
- Пријавите се на свој GitHub налог.
- Идите на Settings.
GitHub подешавања
- Са леве навигационе траке, идите на Developer settings.
GitHub Developer Settings
- Кликните на Personal access tokens, да бисте стигли до нашег одредишта. Видећете личне приступне токене на следећи начин:
GitHub лични токени за приступ
- Кликните на Generate new token да генеришете нови.
Генерисање новог токена
- Унесите напомену за токен. Можете мислити на то као на кратке белешке за памћење.
Напомена за лични токен за приступ
- Изаберите дозволе за токен. Програми који користе токен ће имати приступ свим изабраним дозволама. У нашем случају, одаберите `repo`.
Дозволе за репозиторијум
- Скролујте до дна и кликните на дугме Generate token.
Дугме за генерисање токена
- Лични приступни токен ће се приказати само једном, на следећи начин. Не можемо поново видети наш лични токен. Дакле, копирајте га и сачувајте на сигурном месту. Користите менаџер лозинки, ако је потребно.
Лични приступни токен
- Успешно смо креирали лични приступни токен.
- Сада је време да га употребимо за приступ приватном репозиторијуму.
- Измените URL репозиторијума у датотеци `.git/config`, тако да изгледа овако: `https://{лични_приступни_токен}@github.com/корисничко_име/приватни_репозиторијум.git`, слично као у првом методу.
Лични приступни токен у конфигурацији
Сада покушајте да приступите приватном репозиторијуму.
Да ли је тражио аутентификацију?
Не, неће тражити аутентификацију, док је токен активан. Пређимо на последњи начин за решавање нашег проблема.
SSH
SSH се користи за аутентификацију. Цео документ о SSH можете пронаћи на GitHub-у овде.
Идеја је једноставна: генеришите SSH кључ, додајте га на GitHub налог и уживајте у аутентификацији без лозинке.
Погледајмо ова три корака детаљније.
- Отворите терминал или командну линију на вашем систему.
- Укуцајте команду `ssh-keygen -t rsa` да генеришете нови SSH кључ.
- Тражиће од вас директоријум у којем ће сачувати кључ. Притисните Enter да изаберете подразумевани директоријум. Можете и променити директоријум по вашој жељи. Овде ћемо користити подразумевани директоријум.
SSH директоријум
- Сада, треба да унесемо приступну фразу (passphrase) да заштитимо наш SSH кључ. Али, то је опционо.
- Ако изаберемо приступну фразу за SSH кључ, морамо је унети сваки пут када укључимо систем.
- Ако не изаберемо приступну фразу, нећемо је морати уносити.
SSH приступна фраза
- Поново унесите приступну фразу да је потврдите.
SSH приступна фраза
- Коначно, систем ће генерисати нови SSH кључ за нас, на следећи начин.
SSH кључ
Успешно смо генерисали нови SSH кључ у нашем систему. Систем ће креирати две датотеке, на следећи начин (ако сте променили путању, имена датотека могу бити другачија):
SSH датотеке са кључем
Сада је време да се повежемо са нашим GitHub налогом. Садржај датотеке са екстензијом `.pub` треба копирати на наш GitHub налог за повезивање. У мом случају, то је `id_rsa.pub`.
- Пријавите се на свој GitHub налог.
- Отворите Settings.
GitHub подешавања
- Кликните на SSH and GPG keys, да бисте стигли до нашег одредишта.
SSH and GPG keys
- Кликните на New SSH key да додате наш новогенерисани SSH кључ.
Нови SSH кључ
- Бићете преусмерени на следећи екран.
Нови SSH кључ
- Додајте одговарајући наслов за SSH кључ. SSH кључеви су различити за сваки систем. Дакле, избор на основу тога је једна од добрих опција. Али, то није једина опција. Можете одабрати на основу других ствари, по вашој жељи.
- Након што одаберете наслов, копирајте и залепите `.pub` садржај у друго поље.
Нови SSH кључ
- На крају, притисните дугме Add SSH key и потврдите приступ са вашом GitHub лозинком.
- Новододати SSH кључ ће изгледати на следећи начин.
Нови SSH кључ
Додали смо наш новогенерисани SSH кључ на GitHub. Сада морамо да верификујемо аутентичност SSH везе, да бисмо уживали у аутентификацији без лозинке. Да бисте то урадили, унесите следећу команду у терминал или командну линију:
ssh -T [email protected]
SSH веза
Тражиће потврду. Потврдите. И то је то, завршили смо.
Сада, клонирајте ваш приватни репозиторијум. Овог пута неће тражити никакву потврду аутентичности.
Измените, урезујте и пусхујте. То је то. Више од вас неће тражити аутентификацију. Уживајте.
Закључак
Уф! Покрили смо различите методе за приступ приватним репозиторијумима без сталног уношења акредитива. Можете користити било који метод. Међутим, општа и најбоља пракса је коришћење SSH метода за аутентификацију.
Поново, зависи од ваших жеља; не постоји строго правило за коришћење јединог SSH метода. Већина компанија користи SSH метод за аутентификацију, јер је сигуран и штеди много времена. Обавезно чувајте ваше акредитиве на сигурном месту.
Срећан развој! 🙂