GitHub token at pagpapatunay ng Git: personal access token, Git Credential Manager, push nang walang password
Mula Agosto 2021, hindi na tinatanggap ng GitHub ang password ng account para sa mga operasyon ng Git sa HTTPS: kailangan ang GitHub token (personal access token) o pag-sign in sa pamamagitan ng Git Credential Manager na nagbubukas ng browser at siya na ang nagse-save ng credentials. Ginagawa ang token sa Settings → Developer settings sa github.com, inilalagay ito sa halip na password sa git push o git clone, at ang credential.helper ang nag-iimbak nito.
Bakit hindi na tinatanggap ng Git ang password ng GitHub
Kung inilalagay mo ang username at password ng github.com sa git push at tinatanggihan ka, hindi typo ang problema. Mula Agosto 13, 2021, pinatay ng GitHub ang pag-sign in gamit ang password para sa mga operasyon ng Git sa HTTPS. Sa halip na password, kailangan mo ng GitHub token (personal access token, PAT) o pagpapatunay sa pamamagitan ng browser na isinasagawa ng Git Credential Manager.
Ganito ang itsura ng mensahe ng error:
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/'
Simple ang dahilan: ang password ng account ay nagbibigay ng buong access sa lahat, hindi ito maililimita sa iisang repository, at mahirap bawiin. Ang token naman ay ginagawa para sa isang gawain, may expiration at hanay ng permiso, at kapag nalantad ay binubura mo ito sa loob ng isang minuto nang hindi pinapalitan ang password. Sumunod ang GitLab at Bitbucket sa parehong landas, kaya sa diwa ay naaangkop sa kanila ang lahat ng nasa ibaba.
Dalawang paraan ng pagpapatunay: HTTPS at SSH
Nakikipag-ugnayan ang Git sa remote repository sa isa sa dalawang protocol, at dito nakadepende kung paano ka mag-sign in.
| Protocol | Address ng repository | Paano ka nagpapatunay |
|---|---|---|
| HTTPS | https://github.com/user/project.git | Token o Git Credential Manager (pag-sign in sa browser) |
| SSH | git@github.com:user/project.git | Pares ng SSH key: ang private key ay nasa iyo, ang public key ay nasa settings ng GitHub |
Isang beses lang i-setup ang SSH key, at pagkatapos nito hindi na nagtatanong ang Git ng username o password. Ang paggawa at pagdagdag nito sa GitHub ay detalyadong tinalakay sa artikulo tungkol sa pag-setup ng Git; dito ay tututukan natin ang HTTPS, dahil doon madalas makita ng mga baguhan ang tanong ng password. Para malaman ang protocol ng iyong repository, gamitin ang command na ito:
git remote -v
origin https://github.com/user/project.git (fetch)
origin https://github.com/user/project.git (push)
Paano gumawa ng GitHub token (personal access token)
Ang personal access token ay mahabang random na string na ibinibigay sa iyo ng GitHub kapalit ng password para sa programmatic access. Nagsisimula sa ghp_ ang mga classic token, at sa github_pat_ naman ang mga fine-grained. Ipinapakita ang token nang isang beses lamang, kaagad pagkatapos gawin, kaya kopyahin ito sa password manager.
Hakbang-hakbang
- Mag-sign in sa github.com, i-click ang iyong avatar sa kanang itaas, at buksan ang Settings.
- Sa ibaba ng kaliwang menu, piliin ang Developer settings, pagkatapos ay Personal access tokens.
- Piliin ang uri: Fine-grained tokens (inirerekomenda) o Tokens (classic), at i-click ang button para gumawa ng bagong token.
- Maglagay ng malinaw na pangalan (halimbawa «laptop, trabaho»), expiration, at mga permiso.
- I-click ang generate button at kopyahin agad ang token.
Fine-grained o classic
Limitado sa mga partikular na repository at tiyak na permiso ang fine-grained token. Para sa karaniwang trabaho sa code, piliin ang mga kinakailangang repository, at sa bahagi ng permiso ng repository, ilagay ang Contents: Read and write — sapat na ito para sa clone, pull, at push. Kung binabasa lang ang private repository, sapat na ang Read-only.
Ang classic token ay may bisa sa lahat ng iyong repository nang sabay. Para sa push sa repository, kailangan ang saklaw na repo, at para sa pagbabago ng mga file sa .github/workflows, kailangan din ang workflow. Mas simple ang classic pero mas delikado: kapag nalantad, bukas ang buong account mo.
Expiration
Nag-aalok ang GitHub ng ilang opsiyon ng haba at pinapayagan kang maglagay ng sarili mong petsa. Maaaring gumawa ng token na walang expiration, pero hindi ito mabuting gawin: ang nakalimutang walang-hanggang token ay karaniwang butas sa seguridad. Makatuwiran ang 30–90 araw, at i-renew ito kapag dumating ang paalala na ipinapadala ng GitHub sa e-mail bago ito mag-expire.
Git push at git clone gamit ang token
Mas madali ang paggamit ng token kaysa sa inaakala mo: magtatanong ang Git ng «Password», at ilalagay mo roon ang token sa halip na password.
$ git push origin main
Username for 'https://github.com': your-login
Password for 'https://your-login@github.com': <i-paste ang token>
Sa terminal, hindi ipinapakita ang mga karakter ng password — normal iyon; i-paste lang ang token at pindutin ang Enter. Sa Git Bash sa Windows, gumagana ang pag-paste gamit ang Shift+Insert o ang right-click ng mouse.
Git clone gamit ang token
Ganito rin mag-clone ng private repository: magtatanong ang git clone ng username at token. Kung gusto mong makaiwas sa mga tanong (halimbawa sa script), maaaring ilagay ang token direkta sa address:
git clone https://your-login:<TOKEN>@github.com/user/project.git
Isang kahinaan nito: maiiwan ang address kasama ang token sa .git/config at maaaring mapunta sa kasaysayan ng shell. Pagkatapos mag-clone, mainam na alisin ang token sa address:
git remote set-url origin https://github.com/user/project.git
Sa mga CI system, ipinapasa ang token sa pamamagitan ng secret environment variables, hindi isinusulat sa mga file. Sa GitHub Actions, may built-in na GITHUB_TOKEN para sa kasalukuyang repository, kaya kadalasang hindi na kailangan ang hiwalay na PAT doon.
GitLab: git clone gamit ang token
Sa GitLab, ginagawa ang token sa mga setting ng profile, sa seksyong Access tokens; para sa trabaho sa code, kailangan ang mga scope na read_repository at write_repository. Pareho ang paraan: username ng GitLab bilang user, at token bilang password.
git clone https://oauth2:<TOKEN>@gitlab.com/group/project.git
Tinatanggap ng GitLab ang pangalang oauth2 para sa anumang personal token; maaari ring ilagay ang sarili mong username sa halip.
Git pull at fetch
Sa pampublikong repository, gumagana nang walang pagpapatunay ang git pull at git clone. Magtatanong ng username at token lamang para sa private repository o sa git push. Kung humihingi ng password ang pull sa pampublikong proyekto, kadalasang may mali sa address: sinasagot ng GitHub ang hindi umiiral na repository sa parehong paraan ng sa private.
Git Credential Manager: ano ito
Nakakabagot ang paglalagay ng token sa bawat push. Ang gawaing ito ay ipinapasa sa credential helper — isang programang katulong na tinatawag ng Git kapag kailangan nito ang credentials. Ibinibigay ng Git dito ang address ng server, at ibinabalik nito ang username at password (o token) mula sa sarili nitong storage.
Ang Git Credential Manager (GCM) ang pinakamaginhawa sa mga helper na ito. Ito ay cross-platform na programa mula sa GitHub at Microsoft: sa unang push, nagbubukas ito ng sign-in window o browser, nag-a-authenticate ka sa GitHub (kasama ang two-factor authentication), at kinukuha ng GCM ang token mismo at inilalagay sa ligtas na storage ng system. Hindi mo na kailangang gumawa ng PAT nang manu-mano.
Sinusuportahan ng GCM ang GitHub, GitLab, Bitbucket, at Azure DevOps. Sa Git for Windows, naka-install ito bilang default — iyon ang pagpipiliang credential helper sa installer.
Mga uri ng credential.helper
| Halaga | Saan iniimbak | Kailan gamitin |
|---|---|---|
manager | Git Credential Manager: Windows Credential Manager, macOS Keychain, Secret Service sa Linux | Inirerekomendang opsiyon para sa mga work machine |
osxkeychain | macOS Keychain | Karaniwang helper ng Git sa Mac |
cache | Sa memorya, 15 minuto bilang default | Linux server kung saan ayaw mong i-save ang token sa disk |
store | Plain text sa ~/.git-credentials | Mga nakahiwalay na makina lamang; mababasa ang token ng sinumang may access sa file |
Pag-setup ng pagpapatunay ng Git sa Windows, macOS, at Linux
Para makita kung aling helper ang nakatakda na:
git config --show-origin --get-all credential.helper
Windows
Kung iniwan mo ang default na mga setting habang nag-i-install ng Git, gumagana na ang GCM: sa unang push sa Git Bash, PowerShell, o VS Code, magbubukas ang sign-in window ng GitHub. Kung hindi naka-setup ang helper, i-enable ito nang manu-mano:
git config --global credential.helper manager
macOS
Karaniwang gumagamit na ng osxkeychain ang Git sa Mac: ang token na inilagay mo minsan ay napupunta sa Keychain. Para makakuha ng pag-sign in sa browser, i-install ang Git Credential Manager (halimbawa sa pamamagitan ng Homebrew: brew install --cask git-credential-manager); kusa itong magre-register sa mga setting.
Linux
Sa Linux, hiwalay na naka-install ang GCM (package na .deb o archive mula sa mga release ng proyekto), pagkatapos ay i-configure at piliin ang storage:
git-credential-manager configure
git config --global credential.credentialStore secretservice
Sa server na walang graphical na kapaligiran, mas simple ang pansamantalang cache:
git config --global credential.helper 'cache --timeout=3600'
Alternatibo para sa GitHub: gh auth login
Kung naka-install ang GitHub CLI, dadalhin ka ng gh auth login sa pag-sign in sa browser, at isasaayos ng gh auth setup-git ang Git para kunin ang credentials mula sa gh. Ito ay madaling paraan para «mag-login sa Git Bash» sa isang command.
Paano i-reset o i-update ang naka-save na password ng Git
Pinakakaraniwang sitwasyon: nag-expire ang token o nagpalit ka ng account, pero patuloy na ginagamit ng Git ang lumang data at nakakakuha ng Authentication failed. Kailangan mong burahin ang naka-save na entry — pagkatapos, sa susunod na push, muling magtatanong ang Git.
Pangkalahatang command
Gumagana sa anumang helper:
printf "protocol=https\nhost=github.com\n\n" | git credential reject
Git reset credentials sa Windows
Buksan ang «Control Panel» → «Credential Manager» → «Windows Credentials», hanapin ang mga entry na may pangalang tulad ng git:https://github.com, at burahin ang mga ito. Maaari rin itong gawin sa command line:
cmdkey /list | findstr git
cmdkey /delete:git:https://github.com
Kung GCM ang gamit mo, may sarili rin itong command para mag-log out: git credential-manager github logout <login>.
macOS
Buksan ang «Keychain Access», hanapin ang entry na github.com na uri na «Internet password», at burahin ito. O sa terminal:
git credential-osxkeychain erase
host=github.com
protocol=https
Pagkatapos ng huling linya, pindutin ulit ang Enter para maipadala ang blankong linya.
Linux at store
Para sa store, burahin ang linyang may github.com sa ~/.git-credentials; para sa cache, patakbuhin ang git credential-cache exit.
Mga error sa pagpapatunay at paano ayusin
Support for password authentication was removed
Inilagay mo ang password ng account. Gumawa ng token at i-paste ito sa field na Password, o i-setup ang Git Credential Manager. Kung paulit-ulit ang error nang walang tanong ng password, nakasave pa rin ang lumang password — burahin ito gaya ng inilarawan sa itaas.
git push: Authentication failed
Mga dahilan ayon sa dalas: nag-expire na ang token; nabawi na ang token; walang access ang fine-grained token sa repository na ito o read-only lang ang permiso ng Contents; may naka-save na data ng ibang account sa storage. Suriin ang expiration at permiso ng token sa Developer settings, at burahin ang mga naka-save na credentials.
remote: Permission denied (403)
Matagumpay ang pagpapatunay, pero walang write permission ang account mo sa repository na ito. Dapat ka munang idagdag ng may-ari sa Collaborators, o gumawa ka sa sarili mong fork at magpadala ng pull request.
Repository not found
Para sa private repository, hindi ipinapakita ng GitHub kung umiiral ito, kaya sa maling token ay «not found» ang sagot. Suriin ang address gamit ang git remote -v at ang mga permiso ng token.
Humihingi ng password ang git clone sa bawat pagkakataon
Walang naka-setup na credential helper. I-enable ang manager o osxkeychain — pagkatapos ng unang matagumpay na pag-input, hihinto na ang Git sa pagtatanong. Ang isa pang opsiyon ay lumipat sa SSH.
Paano itago ang token nang ligtas
- Magbigay ng pinakamaliit na permiso: fine-grained token para sa mga kailangang repository sa halip na classic na may
repo. - Maglagay ng expiration at gumawa ng bagong token, sa halip na palaging palawigin ang luma.
- Huwag mag-commit ng token o ilagay ito sa mga remote address; kung napunta ito sa pampublikong repository, maaaring awtomatikong bawiin ito ng GitHub, pero ituring pa rin itong nalantad at burahin ito mismo.
- Gamitin ang system storage (GCM, Keychain) sa halip na
store. - Isang token bawat makina o bawat gawain: kapag nalantad, ang isang iyon lang ang babawiin mo.
Buod
Hindi gumagana para sa Git sa HTTPS ang password ng GitHub mula pa noong 2021. May tatlong gumaganang paraan: mag-sign in sa pamamagitan ng Git Credential Manager sa browser, gumawa ng GitHub token at ilagay ito sa halip na password, o lumipat sa SSH key. Ginagawa ang token sa Settings → Developer settings, ang credential.helper ang nag-iimbak nito, at kapag nakita mo ang Authentication failed, kadalasang nalulutas ito ng pag-renew ng token at pagbura sa lumang credentials. Ang pagkonekta sa GitHub at ang pagtatrabaho sa mga remote repository ay detalyadong tinalakay nang praktikal sa kurso sa Git.
Mga madalas itanong
Maaari ko bang makita ulit ang GitHub token pagkatapos itong gawin?
Hindi, isang beses lang ipinapakita ng GitHub ang token. Kung hindi mo ito naisave, burahin ang luma at gumawa ng bago.
Kailangan ba ng token para sa git clone ng pampublikong repository?
Hindi, nagki-clone at nag-a-update ang mga pampublikong repository gamit ang git pull nang walang pagpapatunay; kailangan ang token para sa private repository at para sa git push.
Ano ang mangyayari kapag nag-expire ang token?
Magsisimulang makatanggap ang Git ng Authentication failed. Gumawa ng bagong token (o i-click ang Regenerate sa luma), burahin ang naka-save na credentials, at ilagay ang bagong token sa susunod na push.
Gumagana ba ang GitHub token kapag naka-on ang two-factor authentication?
Oo, at kailangan talaga ito kapag naka-enable ang 2FA: pinapalitan nito ang password at ang verification code para sa mga operasyon ng Git. Inaasikaso ng Git Credential Manager ang 2FA kapag nag-sign in sa browser.
Saan iniimbak ng Git ang username at password?
Hindi ito iniimbak mismo ng Git. Ginagawa ito ng credential helper: Windows Credential Manager, macOS Keychain, Secret Service sa Linux, o ang file na ~/.git-credentials kapag helper na store ang gamit.
Detalyadong tinatalakay ang paksang ito, may praktis, sa kursong “Git с нуля до уверенного разработчика”.
- Установка и настройка: готовим Git к первому запуску
- GitHub и удалённые репозитории: ваш код в облаке