Token ya GitHub na uthibitishaji wa Git: personal access token, Git Credential Manager, push bila nenosiri
Tangu Agosti 2021 GitHub haikubali nenosiri la akaunti kwa operesheni za Git kupitia HTTPS: badala yake unahitaji token ya GitHub (personal access token) au kuingia kupitia Git Credential Manager, ambayo inafungua kivinjari na yenyewe inahifadhi taarifa za kuingia. Token inaundwa kwenye Settings → Developer settings kwenye github.com, unaiweka badala ya nenosiri wakati wa git push au git clone, na credential.helper ndiyo inayoihifadhi.
Kwa nini Git haikubali tena nenosiri la GitHub
Ukiingiza jina la mtumiaji na nenosiri la github.com wakati wa git push na kupata kukataliwa, tatizo si herufi iliyokosewa. Tangu tarehe 13 Agosti 2021 GitHub imezima kuingia kwa nenosiri kwa operesheni za Git kupitia HTTPS. Badala ya nenosiri unahitaji token ya GitHub (personal access token, PAT) au uthibitishaji kupitia kivinjari unaofanywa na Git Credential Manager.
Ujumbe wa hitilafu unaonekana hivi:
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/... for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/user/project.git/'
Sababu ni rahisi: nenosiri la akaunti linatoa ufikiaji kamili kwa kila kitu, haliwezi kuwekewa kikomo kwa repository moja, na ni vigumu kulibatilisha. Token inaundwa kwa kazi mahususi, ina muda wa matumizi na seti ya ruhusa, na ikivuja unaifuta ndani ya dakika moja bila kubadilisha nenosiri. GitLab na Bitbucket wameenda njia hiyo hiyo, kwa hiyo yote yaliyoelezwa hapa yanatumika pia kwao kwa maana.
Njia mbili za uthibitishaji: HTTPS na SSH
Git inawasiliana na repository ya mbali kwa mojawapo ya itifaki mbili, na hilo ndilo linaloamua jinsi unavyoingia.
| Itifaki | Anwani ya repository | Unajithibitisha vipi |
|---|---|---|
| HTTPS | https://github.com/user/project.git | Token au Git Credential Manager (kuingia kwa kivinjari) |
| SSH | git@github.com:user/project.git | Jozi ya funguo za SSH: ya faragha iko kwako, ya umma iko kwenye mipangilio ya GitHub |
Funguo za SSH zinasanidiwa mara moja, na baada ya hapo Git haiulizi jina wala nenosiri. Kuziunda na kuziongeza kwenye GitHub kumeelezwa kwa kina kwenye makala ya kusanidi Git; hapa tutazingatia HTTPS, kwa sababu ndiyo ambapo wanaoanza mara nyingi wanaona ombi la nenosiri. Ili kujua itifaki ya repository yako, tumia amri hii:
git remote -v
origin https://github.com/user/project.git (fetch)
origin https://github.com/user/project.git (push)
Jinsi ya kuunda token ya GitHub (personal access token)
Personal access token ni mfuatano mrefu wa nasibu ambao GitHub inakupa badala ya nenosiri kwa ufikiaji wa programu. Token za classic zinaanza na ghp_, na zile za fine-grained zinaanza na github_pat_. Token inaonyeshwa mara moja tu, mara baada ya kuundwa, kwa hiyo ihifadhi kwenye meneja wa nywila mara moja.
Hatua kwa hatua
- Ingia kwenye github.com, bonyeza picha yako ya wasifu kona ya juu kulia na ufungue Settings.
- Chini ya menyu ya kushoto chagua Developer settings, kisha Personal access tokens.
- Chagua aina: Fine-grained tokens (inapendekezwa) au Tokens (classic), kisha bonyeza kitufe cha kuunda token mpya.
- Weka jina linaloeleweka (kwa mfano «laptop, kazini»), muda wa matumizi, na ruhusa.
- Bonyeza kitufe cha kuzalisha na unakili token mara moja.
Fine-grained au classic
Token ya fine-grained inawekewa mipaka kwa repository maalum na ruhusa mahususi. Kwa kazi ya kawaida ya msimbo, chagua repository zinazohitajika kisha kwenye sehemu ya ruhusa za repository weka Contents: Read and write — hii inatosha kwa clone, pull na push. Ikiwa unasoma tu repository ya faragha, Read-only inatosha.
Token ya classic inatumika kwa repository zako zote kwa wakati mmoja. Kwa push kwenye repository unahitaji wigo wa repo, na kwa kubadilisha faili kwenye .github/workflows pia workflow. Classic ni rahisi zaidi lakini ni hatari zaidi: ikivuja, inafungua akaunti yako yote.
Muda wa matumizi
GitHub inatoa chaguzi kadhaa za muda na inakuruhusu kuweka tarehe yako mwenyewe. Token isiyo na muda inawezekana kuundwa, lakini si vizuri: token ya milele iliyosahaulika ni shimo la kawaida la usalama. Ni busara kuweka siku 30–90 na kuitengeneza upya kwa kukumbushwa, kwa barua pepe ambayo GitHub hutuma kabla ya kuisha.
Git push na git clone kwa token
Kutumia token ni rahisi kuliko inavyoonekana: Git inauliza «Password», na unaweka token hapo badala ya nenosiri.
$ git push origin main
Username for 'https://github.com': your-login
Password for 'https://your-login@github.com': <bandika token>
Kwenye terminal herufi za nenosiri hazionyeshwi — hiyo ni kawaida; bandika token na bonyeza Enter. Kwenye Git Bash ya Windows, kubandika kunafanya kazi kwa Shift+Insert au kitufe cha kulia cha panya.
Git clone kwa token
Repository ya faragha unaiclone kwa namna ileile: git clone itauliza jina la mtumiaji na token. Ikiwa unataka kuepuka maswali (kwa mfano kwenye skripti), token inaweza kuwekwa moja kwa moja kwenye anwani:
git clone https://your-login:<TOKEN>@github.com/user/project.git
Hasara moja: anwani pamoja na token itahifadhiwa kwenye .git/config na inaweza kuingia kwenye historia ya amri za shell. Baada ya kuclone, ni vizuri kuondoa token kwenye anwani:
git remote set-url origin https://github.com/user/project.git
Kwenye mifumo ya CI, token inapitishwa kupitia vigezo vya mazingira vya siri, si kuandikwa kwenye faili. Kwenye GitHub Actions kuna GITHUB_TOKEN iliyojengwa ndani kwa repository ya sasa, kwa hiyo PAT tofauti mara nyingi haihitajiki hapo.
GitLab: git clone kwa token
Kwenye GitLab token inaundwa kwenye mipangilio ya wasifu, sehemu ya Access tokens; kwa kazi ya msimbo zinahitajika ruhusa read_repository na write_repository. Mpango ni uleule: jina la mtumiaji wa GitLab kama mtumiaji, na token kama nenosiri.
git clone https://oauth2:<TOKEN>@gitlab.com/group/project.git
GitLab inakubali jina oauth2 kwa token yoyote binafsi; badala yake unaweza pia kuweka jina lako la mtumiaji.
Git pull na fetch
Kwa repository ya umma, git pull na git clone zinafanya kazi bila uthibitishaji. Jina na token vinaombwa tu kwa repository ya faragha au wakati wa git push. Ikiwa pull kwenye mradi wa umma inaomba nenosiri, mara nyingi anwani ina kosa: GitHub inajibu repository isiyokuwepo kwa njia ileile kama ya faragha.
Git Credential Manager: ni nini
Kuweka token kila wakati unapofanya push ni usumbufu. Kazi hii inachukuliwa na credential helper — programu msaidizi ambayo Git inaiita inapohitaji taarifa za kuingia. Git inaipa anwani ya seva, nayo inarudisha jina la mtumiaji na nenosiri (au token) kutoka hifadhi yake.
Git Credential Manager (GCM) ndiyo msaidizi rahisi zaidi kati ya hao. Ni programu ya majukwaa mengi kutoka GitHub na Microsoft: wakati wa push ya kwanza inafungua dirisha la kuingia au kivinjari, unajithibitisha kwenye GitHub (pamoja na uthibitishaji wa mambo mawili), na GCM inapata token yenyewe na kuiweka kwenye hifadhi salama ya mfumo. Hutahitaji kuunda PAT kwa mkono.
GCM inasaidia GitHub, GitLab, Bitbucket na Azure DevOps. Kwenye Git for Windows inasakinishwa kwa chaguo-msingi — ni chaguo lile la credential helper kwenye kisakinishi.
Thamani za credential.helper
| Thamani | Inahifadhi wapi | Itumike lini |
|---|---|---|
manager | Git Credential Manager: Windows Credential Manager, Keychain ya macOS, Secret Service ya Linux | Chaguo linalopendekezwa kwa kompyuta za kazi |
osxkeychain | Keychain ya macOS | Msaidizi wa kawaida wa Git kwenye Mac |
cache | Kwenye kumbukumbu, kwa chaguo-msingi dakika 15 | Seva ya Linux ambako hutaki kuhifadhi token kwenye diski |
store | Maandishi wazi kwenye ~/.git-credentials | Mashine zilizotengwa tu; token inasomwa na yeyote mwenye ufikiaji wa faili |
Kusanidi uthibitishaji wa Git kwenye Windows, macOS na Linux
Ili kuona msaidizi gani tayari amesanidiwa:
git config --show-origin --get-all credential.helper
Windows
Ukiacha mipangilio ya chaguo-msingi wakati wa kusakinisha Git, GCM tayari inafanya kazi: wakati wa push ya kwanza kwenye Git Bash, PowerShell au VS Code, dirisha la kuingia kwenye GitHub litafunguka. Ikiwa msaidizi hajasanidiwa, uwashe kwa mkono:
git config --global credential.helper manager
macOS
Git kwenye Mac kwa kawaida tayari inatumia osxkeychain: token uliyoiingiza mara moja inaingia kwenye Keychain. Ili kupata kuingia kwa kivinjari, sakinisha Git Credential Manager (kwa mfano kupitia Homebrew: brew install --cask git-credential-manager); itajiandikisha yenyewe kwenye mipangilio.
Linux
Kwenye Linux GCM inasakinishwa kando (kifurushi cha .deb au faili la tar.gz kutoka ukurasa wa releases wa mradi), kisha unafanya usanidi na kuchagua hifadhi:
git-credential-manager configure
git config --global credential.credentialStore secretservice
Kwenye seva isiyo na mazingira ya picha, akiba ya muda ni rahisi zaidi:
git config --global credential.helper 'cache --timeout=3600'
Mbadala kwa GitHub: gh auth login
Ukiwa na GitHub CLI, amri gh auth login inakuongoza kuingia kwa kivinjari, na gh auth setup-git inasanidi Git ichukue taarifa za kuingia kutoka kwa gh. Hii ni njia rahisi ya «kuingia kwenye Git Bash» kwa amri moja.
Jinsi ya kufuta au kusasisha nenosiri la Git lililohifadhiwa
Hali inayotokea mara nyingi: token imeisha muda au umebadilisha akaunti, lakini Git bado inatumia data ya zamani na kupata Authentication failed. Unahitaji kufuta ingizo lililohifadhiwa — kisha wakati wa push ijayo Git itauliza upya.
Amri ya jumla
Inafanya kazi na msaidizi yeyote:
printf "protocol=https\nhost=github.com\n\n" | git credential reject
Git reset credentials kwenye Windows
Fungua «Control Panel» → «Credential Manager» → «Windows Credentials», tafuta ingizo lenye jina kama git:https://github.com na ulifute. Vilevile inawezekana kwenye mstari wa amri:
cmdkey /list | findstr git
cmdkey /delete:git:https://github.com
Ikiwa unatumia GCM, ina pia amri yake ya kutoka kwenye akaunti: git credential-manager github logout <jina la mtumiaji>.
macOS
Fungua «Keychain Access», tafuta ingizo la github.com la aina ya «Internet password» na ulifute. Au kwenye terminal:
git credential-osxkeychain erase
host=github.com
protocol=https
Baada ya mstari wa mwisho, bonyeza Enter tena ili kutuma mstari tupu.
Linux na store
Kwa store, futa mstari wenye github.com kutoka ~/.git-credentials; kwa cache, tekeleza git credential-cache exit.
Makosa ya uthibitishaji na jinsi ya kuyarekebisha
Support for password authentication was removed
Uliingiza nenosiri la akaunti. Unda token na uibandike kwenye sehemu ya Password, au sanidi Git Credential Manager. Ikiwa hitilafu inarudia bila kuomba nenosiri, nenosiri la zamani limehifadhiwa — lifute kama ilivyoelezwa hapo juu.
git push: Authentication failed
Sababu kwa mpangilio wa mara zinavyotokea: muda wa token umeisha; token imebatilishwa; token ya fine-grained haina ufikiaji wa repository hii au ruhusa ya Contents ni ya kusoma tu; hifadhi ina taarifa za akaunti nyingine. Angalia muda na ruhusa za token kwenye Developer settings, kisha futa taarifa zilizohifadhiwa.
remote: Permission denied (403)
Uthibitishaji umefaulu, lakini akaunti yako haina ruhusa ya kuandika kwenye repository hii. Mmiliki lazima akuongeze kwenye Collaborators, au fanya kazi kupitia fork yako na pull request.
Repository not found
Kwa repository ya faragha GitHub haifichui kama ipo, kwa hiyo ukiwa na token isiyo sahihi utaona «not found». Angalia anwani kwa git remote -v na ruhusa za token.
Git clone inaomba nenosiri kila wakati
Credential helper haijasanidiwa. Washa manager au osxkeychain — baada ya kuingiza mara ya kwanza kwa mafanikio, Git haitauliza tena. Chaguo jingine ni kuhamia SSH.
Jinsi ya kuhifadhi token kwa usalama
- Toa ruhusa chache kadiri inavyowezekana: fine-grained token kwa repository zinazohitajika badala ya classic yenye
repo. - Weka muda wa matumizi na uunde token mpya, badala ya kuiongezea muda bila mwisho.
- Usiweke token kwenye commit wala kwenye anwani za remote; token ikiingia kwenye repository ya umma, GitHub inaweza kuibatilisha kiotomatiki, lakini ichukulie kama imevuja na uifute mwenyewe.
- Tumia hifadhi ya mfumo (GCM, Keychain) badala ya
store. - Token moja kwa kompyuta moja au kazi moja: ikivuja, unabatilisha hiyo tu.
Kwa ufupi
Nenosiri la GitHub halifanyi kazi kwa Git kupitia HTTPS tangu 2021. Kuna njia tatu zinazofanya kazi: kuingia kupitia Git Credential Manager kwenye kivinjari, kuunda token ya GitHub na kuiweka badala ya nenosiri, au kuhamia kwenye funguo za SSH. Token inaundwa kwenye Settings → Developer settings, credential.helper ndiyo inayoihifadhi, na ukiona Authentication failed, mara nyingi kuunda upya token na kufuta taarifa za zamani kunatatua tatizo. Kuunganisha kwenye GitHub na kufanya kazi na repository za mbali kumefafanuliwa kwa mifano halisi kwenye kozi ya Git.
Maswali ya mara kwa mara
Naweza kuona token ya GitHub baada ya kuiunda?
Hapana, GitHub inaonyesha token mara moja tu. Usipoihifadhi, futa ile ya zamani na uunde mpya.
Je, token inahitajika kwa git clone ya repository ya umma?
Hapana, repository za umma zinaclone na kusasishwa kwa git pull bila uthibitishaji; token inahitajika kwa repository za faragha na kwa git push.
Nini kitatokea muda wa token ukiisha?
Git itaanza kupokea Authentication failed. Unda token mpya (au bonyeza Regenerate kwenye ile ya zamani), futa taarifa zilizohifadhiwa, kisha weka token mpya wakati wa push ijayo.
Je, token ya GitHub inafanya kazi na uthibitishaji wa mambo mawili?
Ndiyo, na hasa inahitajika ukiwa umewasha 2FA: inachukua nafasi ya nenosiri na msimbo wa uthibitisho kwa operesheni za Git. Git Credential Manager ikiingia kwa kivinjari, 2FA inashughulikiwa yenyewe.
Git inahifadhi wapi jina la mtumiaji na nenosiri?
Git yenyewe haihifadhi. Hilo linafanywa na credential helper: Windows Credential Manager, Keychain ya macOS, Secret Service ya Linux, au faili ya ~/.git-credentials ukitumia helper ya store.
Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Git kutoka mwanzo hadi msanidi programu anayejiweza”.
- Kusakinisha na Kusanidi: Kutayarisha Git kwa Matumizi ya Kwanza
- GitHub na Hifadhi za Mbali: Msimbo Wako Hewani