# GitHub token மற்றும் Git அங்கீகாரம்: personal access token, Git Credential Manager, கடவுச்சொல் இல்லாமல் push

URL: https://skillaria.top/ta/guides/git/github-token-git-auth

2021 ஆகஸ்ட் முதல் GitHub, HTTPS வழியாக Git-க்கு கணக்குக் கடவுச்சொல்லை ஏற்பதில்லை; அதற்குப் பதிலாக GitHub token (personal access token) அல்லது உலாவியைத் திறந்து உள்நுழையும் Git Credential Manager தேவை, அது தகவல்களை தானே சேமிக்கும். github.com-இல் Settings → Developer settings வழியாக token உருவாக்கி, git push அல்லது git clone-இல் கடவுச்சொல்லுக்குப் பதில் உள்ளிடுங்கள்; credential.helper அதைச் சேமிக்கும்.

## Git இனி GitHub கடவுச்சொல்லை ஏன் ஏற்பதில்லை

git push-இல் github.com கணக்கின் பயனர்பெயரையும் கடவுச்சொல்லையும் உள்ளிட்டு நிராகரிப்பு வந்தால், அது எழுத்துப் பிழை அல்ல. 13 ஆகஸ்ட் 2021 முதல் HTTPS வழியாக Git செயல்பாடுகளுக்கு GitHub கடவுச்சொல் உள்நுழைவை நிறுத்திவிட்டது. அதற்குப் பதிலாக GitHub token (personal access token, அதாவது PAT) அல்லது Git Credential Manager செய்யும் உலாவி வழி அங்கீகாரம் தேவை.

பிழைச் செய்தி இப்படித் தோன்றும்:

```
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/'
```

காரணம் எளியது: கணக்குக் கடவுச்சொல் எல்லாவற்றுக்கும் முழு அணுகல் தருகிறது; ஒரு களஞ்சியத்துக்கு மட்டும் கட்டுப்படுத்த முடியாது, திரும்பப் பெறுவதும் கடினம். Token-ஐ ஒரு பணிக்காக உருவாக்கலாம், காலாவதி தேதியும் அனுமதிகளின் தொகுப்பும் கொடுக்கலாம்; அது கசிந்தாலும் ஒரு நிமிடத்தில் ரத்து செய்யலாம், கடவுச்சொல்லை மாற்ற வேண்டியதில்லை. GitLab மற்றும் Bitbucket-உம் இதே வழியைப் பின்பற்றுகின்றன; கீழே உள்ளவை அவற்றுக்கும் கொள்கை அளவில் பொருந்தும்.

## அங்கீகாரத்தின் இரண்டு வழிகள்: HTTPS மற்றும் SSH

Git தொலைதூர களஞ்சியத்துடன் இரண்டு நெறிமுறைகளில் ஒன்றின் மூலம் தொடர்பு கொள்கிறது; அதைப் பொறுத்தே நீங்கள் எப்படி உள்நுழைகிறீர்கள் என்பது அமைகிறது.

| நெறிமுறை | களஞ்சிய முகவரி | எதைக் கொண்டு அங்கீகாரம் |
| --- | --- | --- |

| HTTPS | `https://github.com/user/project.git` | Token அல்லது Git Credential Manager (உலாவியில் உள்நுழைவு) |

| SSH | `git@github.com:user/project.git` | SSH விசை ஜோடி: தனிப்பட்ட விசை உங்களிடம், பொது விசை GitHub அமைப்புகளில் |

SSH விசையை ஒரு முறை அமைத்தால், அதன் பின் Git பயனர்பெயரோ கடவுச்சொல்லோ கேட்பதில்லை. அதை உருவாக்கி GitHub-இல் சேர்ப்பது Git அமைப்பு பற்றிய கட்டுரையில் விளக்கப்பட்டுள்ளது; இங்கு HTTPS-இல் கவனம் செலுத்துவோம், ஏனெனில் கடவுச்சொல் கேட்பதை புதியவர்கள் அதிகம் காண்பது அங்குதான். உங்கள் களஞ்சியம் எந்த நெறிமுறையைப் பயன்படுத்துகிறது என்பதைக் கண்டறிய:

```
git remote -v
origin  https://github.com/user/project.git (fetch)
origin  https://github.com/user/project.git (push)
```

## GitHub token (personal access token) எப்படி உருவாக்குவது

Personal access token என்பது நிரலாக்க அணுகலுக்காக GitHub கடவுச்சொல்லுக்குப் பதிலாக வழங்கும் நீண்ட சீரற்ற சரம். Classic token-கள் `ghp_` என்று தொடங்கும்; fine-grained token-கள் `github_pat_` என்று தொடங்கும். Token உருவாக்கியவுடன் ஒரே ஒரு முறை மட்டுமே காட்டப்படும்; எனவே உடனே கடவுச்சொல் நிர்வாகியில் நகலெடுத்து வையுங்கள்.

### படிப்படியாக

1. github.com-இல் உள்நுழைந்து, மேல் வலதுபுறம் உங்கள் படத்தை அழுத்தி **Settings** திறங்கள்.
2. இடது பட்டியின் அடியில் **Developer settings**, பின்னர் **Personal access tokens** தேர்ந்தெடுங்கள்.
3. வகையைத் தேர்ந்தெடுங்கள்: **Fine-grained tokens** (பரிந்துரைக்கப்பட்டது) அல்லது **Tokens (classic)**; புதிய token உருவாக்கும் பொத்தானை அழுத்துங்கள்.
4. புரியும்படியான பெயரைக் கொடுங்கள் (எடுத்துக்காட்டாக «laptop, work»), காலாவதி காலத்தையும் அனுமதிகளையும் அமையுங்கள்.
5. உருவாக்கு பொத்தானை அழுத்தி, token-ஐ உடனே நகலெடுங்கள்.

### Fine-grained அல்லது classic

Fine-grained token குறிப்பிட்ட களஞ்சியங்களுக்கும், தனித்தனி அனுமதிகளுக்கும் மட்டுப்படுத்தப்படும். சாதாரண குறியீட்டு வேலைக்கு, தேவையான களஞ்சியங்களைத் தேர்ந்து, களஞ்சிய அனுமதிகளில் **Contents: Read and write** கொடுங்கள்; clone, pull, push ஆகியவற்றுக்கு இது போதும். தனியார் களஞ்சியத்தை மட்டும் படிக்கிறீர்கள் என்றால் Read-only போதும்.

Classic token உங்கள் எல்லாக் களஞ்சியங்களுக்கும் ஒரே நேரத்தில் பொருந்தும். களஞ்சியத்தில் push செய்ய `repo` எல்லை வேண்டும்; `.github/workflows`-இல் கோப்புகளை மாற்ற கூடுதலாக `workflow`. Classic எளியது, ஆனால் ஆபத்தானது: அது கசிந்தால் முழுக் கணக்குக்கும் அணுகல் கிடைக்கும்.

### காலாவதி காலம்

GitHub பல காலங்களை வழங்குகிறது; தனிப்பட்ட தேதியையும் அமைக்கலாம். காலாவதி இல்லாத token-ஐ உருவாக்கலாம், ஆனால் அதைச் செய்யாதீர்கள்: மறந்துவிட்ட நிரந்தர token ஒரு பாதுகாப்பு ஓட்டை. 30 முதல் 90 நாட்கள் வைத்து, காலாவதிக்கு முன் GitHub அனுப்பும் நினைவூட்டல் மின்னஞ்சலைப் பார்த்து புதுப்பிப்பது நல்லது.

## Token கொண்டு git push மற்றும் git clone

Token பயன்படுத்துவது தோன்றுவதை விட எளிது: Git «Password» என்று கேட்கும்; கடவுச்சொல்லுக்குப் பதில் token-ஐ ஒட்டுங்கள்.

```
$ git push origin main
Username for 'https://github.com': your-login
Password for 'https://your-login@github.com':
```

முனையத்தில் கடவுச்சொல் எழுத்துகள் தெரியாது; இது இயல்பானது. Token-ஐ ஒட்டி Enter அழுத்துங்கள். Windows-இல் Git Bash-இல் ஒட்டுவதற்கு Shift+Insert அல்லது வலது சுட்டி பொத்தான் வேலை செய்யும்.

### Token கொண்டு git clone

தனியார் களஞ்சியத்தையும் அதே முறையில் clone செய்யலாம்: `git clone` பயனர்பெயரையும் token-ஐயும் கேட்கும். கேள்விகள் இல்லாமல் வேண்டுமெனில் (உதாரணமாக ஒரு script-இல்), token-ஐ முகவரியிலேயே வைக்கலாம்:

```
git clone https://your-login:@github.com/user/project.git
```

இதில் ஒரு குறை உண்டு: token உடன் கூடிய முகவரி `.git/config`-இல் சேமிக்கப்படும், அது ஷெல் வரலாற்றிலும் சேரலாம். Clone செய்த பின் token-ஐ முகவரியிலிருந்து நீக்குங்கள்:

```
git remote set-url origin https://github.com/user/project.git
```

CI அமைப்புகளில் token-ஐ இரகசிய சூழல் மாறிகள் வழியாக அனுப்ப வேண்டும்; கோப்புகளில் எழுதக்கூடாது. GitHub Actions-இல் தற்போதைய களஞ்சியத்துக்கு உள்ளமைந்த `GITHUB_TOKEN` ஏற்கனவே உள்ளது; அங்கே தனி PAT பெரும்பாலும் தேவையில்லை.

### GitLab: token கொண்டு git clone

GitLab-இல் token-ஐ சுயவிவர அமைப்புகளில் Access tokens பிரிவில் உருவாக்குகிறீர்கள்; குறியீட்டு வேலைக்கு `read_repository` மற்றும் `write_repository` எல்லைகள் தேவை. முறை ஒன்றே: GitLab பயனர்பெயர் பயனர்பெயராகவும், token கடவுச்சொல்லாகவும்.

```
git clone https://oauth2:@gitlab.com/group/project.git
```

எந்த தனிப்பட்ட token-உடனும் GitLab `oauth2` என்ற பெயரை ஏற்கும்; அதற்குப் பதில் உங்கள் சொந்தப் பயனர்பெயரையும் வைக்கலாம்.

### Git pull மற்றும் fetch

பொது களஞ்சியத்துக்கு `git pull` மற்றும் `git clone` அங்கீகாரம் இல்லாமலேயே வேலை செய்யும். பயனர்பெயரும் token-உம் தனியார் களஞ்சியத்துக்கு அல்லது `git push`-இன்போது மட்டுமே கேட்கப்படும். பொதுத் திட்டத்தில் pull கடவுச்சொல் கேட்டால், பெரும்பாலும் முகவரியில் பிழை இருக்கும்: இருக்காத களஞ்சியத்துக்கு GitHub, மூடப்பட்ட களஞ்சியத்துக்குப் பதில் சொல்லும் அதே வழியில் பதில் சொல்லும்.

## Git Credential Manager என்றால் என்ன

ஒவ்வொரு push-இலும் token-ஐ உள்ளிடுவது சிரமம். அந்தப் பணியை credential helper ஏற்கிறது: அங்கீகாரத் தகவல் தேவைப்படும்போது Git அழைக்கும் உதவி நிரல் அது. Git சேவையகத்தின் முகவரியை அதற்குக் கொடுக்கும்; அது தன் சேமிப்பிடத்திலிருந்து பயனர்பெயரையும் கடவுச்சொல்லையும் (அல்லது token-ஐ) திருப்பித் தரும்.

Git Credential Manager (GCM) இவற்றில் மிகவும் வசதியானது. இது GitHub மற்றும் Microsoft தயாரிக்கும் பல-தளக் கருவி: முதல் push-இல் உள்நுழைவுச் சாளரம் அல்லது உலாவியைத் திறக்கும்; நீங்கள் GitHub-இல் உள்நுழைவீர்கள் (இரு-காரணி அங்கீகாரம் உட்பட), GCM token-ஐத் தானே பெற்று கணினியின் பாதுகாப்பான சேமிப்பிடத்தில் வைக்கும். இந்த நிலையில் PAT-ஐ கைமுறையாக உருவாக்கத் தேவையில்லை.

GCM GitHub, GitLab, Bitbucket, Azure DevOps ஆகியவற்றை ஆதரிக்கிறது. Git for Windows நிறுவியில் இது இயல்பாக நிறுவப்படுகிறது; நிறுவியில் credential helper தேர்வாக இதுவே தெரியும்.

### credential.helper வகைகள்

| மதிப்பு | எங்கே சேமிக்கும் | எப்போது பயன்படுத்துவது |
| --- | --- | --- |

| `manager` | Git Credential Manager: Windows Credential Manager, macOS Keychain, Linux-இல் Secret Service | வேலை கணினிகளுக்கு பரிந்துரைக்கப்பட்ட தேர்வு |

| `osxkeychain` | macOS Keychain | Mac-இல் Git-இன் நிலையான உதவியாளர் |

| `cache` | நினைவகத்தில், இயல்பாக 15 நிமிடங்கள் | வட்டில் token சேமிக்க விரும்பாத Linux சேவையகம் |

| `store` | `~/.git-credentials`-இல் வெற்று உரையாக | தனிமைப்படுத்தப்பட்ட கணினிகளுக்கு மட்டும்; கோப்பை அணுகக்கூடிய எவரும் token-ஐப் படிக்கலாம் |

## Windows, macOS, Linux-இல் Git அங்கீகாரம் அமைப்பது

ஏற்கனவே எந்த உதவியாளர் அமைக்கப்பட்டுள்ளது என்று பார்க்க:

```
git config --show-origin --get-all credential.helper
```

### Windows

Git நிறுவும்போது இயல்புநிலை அமைப்புகளை வைத்திருந்தால், GCM ஏற்கனவே வேலை செய்கிறது: முதல் push-இல் Git Bash, PowerShell அல்லது VS Code-இல் GitHub உள்நுழைவுச் சாளரம் திறக்கும். உதவியாளர் அமைக்கப்படவில்லை என்றால் கைமுறையாக இயக்குங்கள்:

```
git config --global credential.helper manager
```

### macOS

Mac-இல் Git பொதுவாக `osxkeychain`-ஐப் பயன்படுத்தும்: ஒரு முறை உள்ளிட்ட token Keychain-இல் சேரும். உலாவி வழி உள்நுழைவு வேண்டுமெனில் Git Credential Manager-ஐ நிறுவுங்கள் (எடுத்துக்காட்டாக Homebrew மூலம்: `brew install --cask git-credential-manager`); அது தன்னை அமைப்புகளில் பதிவு செய்துகொள்ளும்.

### Linux

Linux-இல் GCM தனியாக நிறுவப்படுகிறது (.deb தொகுப்பு அல்லது திட்டத்தின் வெளியீடுகளிலிருந்து காப்பகம்). பின்னர் அமைப்பை இயக்கி சேமிப்பிடத்தைத் தேர்ந்தெடுங்கள்:

```
git-credential-manager configure
git config --global credential.credentialStore secretservice
```

வரைகலை இடைமுகம் இல்லாத சேவையகத்தில் தற்காலிக cache எளியது:

```
git config --global credential.helper 'cache --timeout=3600'
```

### GitHub-க்கு மாற்று: gh auth login

GitHub CLI நிறுவியிருந்தால், `gh auth login` உலாவியில் உள்நுழைய வழிகாட்டும்; `gh auth setup-git` Git-ஐ `gh`-இலிருந்து அங்கீகாரத் தகவலை எடுக்கும்படி அமைக்கும். ஒரே கட்டளையில் Git Bash-இல் உள்நுழைய இது வசதியான வழி.

## சேமித்த Git கடவுச்சொல்லை மீட்டமைப்பது அல்லது புதுப்பிப்பது எப்படி

மிகவும் பொதுவான நிலை: token காலாவதியானது அல்லது கணக்கை மாற்றினீர்கள், ஆனால் Git பழைய தகவல்களையே அனுப்பி `Authentication failed` பெறுகிறது. தீர்வு, சேமித்த பதிவை நீக்குவது; அப்போது அடுத்த push-இல் Git மீண்டும் கேட்கும்.

### எல்லா நிலைகளுக்குமான பொதுக் கட்டளை

எந்த credential helper-உடனும் வேலை செய்யும்:

```
printf "protocol=https\nhost=github.com\n\n" | git credential reject
```

### Windows-இல் Git reset credentials

Control Panel → Credential Manager → Windows Credentials திறந்து, `git:https://github.com` வடிவிலான பதிவுகளைக் கண்டு நீக்குங்கள். கட்டளை வரியிலும் இதைச் செய்யலாம்:

```
cmdkey /list | findstr git
cmdkey /delete:git:https://github.com
```

GCM பயன்படுத்தினால் கணக்கிலிருந்து வெளியேற அதற்கென ஒரு கட்டளை உண்டு: `git credential-manager github logout <பயனர்பெயர்>`.

### macOS

«Keychain Access» திறந்து, «Internet password» வகையிலுள்ள `github.com` பதிவைத் தேடி நீக்குங்கள். அல்லது முனையத்திலிருந்து:

```
git credential-osxkeychain erase
host=github.com
protocol=https
```

கடைசி வரிக்குப் பின் இன்னொரு முறை Enter அழுத்தி வெற்று வரியை அனுப்புங்கள்.

### Linux மற்றும் store

`store`-க்கு `~/.git-credentials`-இலிருந்து github.com வரியை நீக்குங்கள்; `cache`-க்கு `git credential-cache exit` இயக்குங்கள்.

## அங்கீகாரப் பிழைகளும் அவற்றின் தீர்வுகளும்

### Support for password authentication was removed

கணக்குக் கடவுச்சொல்லை உள்ளிட்டுள்ளீர்கள். Token ஒன்றை உருவாக்கி Password புலத்தில் ஒட்டுங்கள், அல்லது Git Credential Manager-ஐ அமையுங்கள். கடவுச்சொல் கேட்காமலேயே பிழை தொடர்ந்தால், பழைய கடவுச்சொல் சேமிப்பிடத்தில் உள்ளது என்று பொருள்; மேலே விளக்கியபடி அதை நீக்குங்கள்.

### git push: Authentication failed

காரணங்கள், அடிக்கடி நிகழும் வரிசையில்: token-இன் காலம் முடிந்தது; token ரத்து செய்யப்பட்டது; fine-grained token-க்கு இந்தக் களஞ்சியத்துக்கான அணுகல் இல்லை, அல்லது Contents படிக்க மட்டும்; சேமிப்பிடத்தில் வேறொரு கணக்கின் தகவல்கள் உள்ளன. Developer settings-இல் token-இன் காலத்தையும் அனுமதிகளையும் சரிபார்த்து, சேமித்த அங்கீகாரத் தகவல்களை மீட்டமையுங்கள்.

### remote: Permission denied (403)

அங்கீகாரம் வெற்றி பெற்றது, ஆனால் உங்கள் கணக்குக்கு இந்தக் களஞ்சியத்தில் எழுதும் உரிமை இல்லை. உரிமையாளர் உங்களை Collaborators-இல் சேர்க்க வேண்டும்; அல்லது உங்கள் fork மற்றும் pull request வழியாக வேலை செய்யுங்கள்.

### Repository not found

தனியார் களஞ்சியத்தின் இருப்பை GitHub வெளிப்படுத்துவதில்லை; அதனால் தவறான token-உடன் «not found» என்று எழுதும். `git remote -v` மூலம் முகவரியையும், token-இன் அனுமதிகளையும் சரிபாருங்கள்.

### Git clone ஒவ்வொரு முறையும் கடவுச்சொல் கேட்கிறது

Credential helper அமைக்கப்படவில்லை. `manager` அல்லது `osxkeychain`-ஐ இயக்குங்கள்; முதல் வெற்றிகரமான உள்ளீட்டுக்குப் பின் Git கேட்பதை நிறுத்தும். மாற்று வழி SSH விசைகளுக்கு மாறுவது.

## Token-ஐ பாதுகாப்பாக வைத்திருப்பது எப்படி

- குறைந்தபட்ச அனுமதிகளைக் கொடுங்கள்: `repo` கொண்ட classic-க்கு பதில், தேவையான களஞ்சியங்களுக்கான fine-grained token.
- காலாவதி காலத்தை அமையுங்கள்; token-ஐ எல்லையின்றி நீட்டாமல் புதிதாக உருவாக்குங்கள்.
- Token-ஐ commit-களில் சேர்க்காதீர்கள், remote முகவரிகளில் வைக்காதீர்கள்; பொதுக் களஞ்சியத்தில் token கசிந்தால் GitHub அதைத் தானாக ரத்து செய்யலாம், ஆனால் அதை வெளிப்பட்டதாகக் கருதி நீங்களே நீக்குங்கள்.
- `store`-க்குப் பதில் கணினியின் பாதுகாப்பான சேமிப்பிடத்தைப் (GCM, Keychain) பயன்படுத்துங்கள்.
- ஒரு கணினிக்கு அல்லது ஒரு பணிக்கு ஒரு token; கசிவு ஏற்பட்டால் குறிப்பிட்ட token-ஐ மட்டும் ரத்து செய்யலாம்.

## சுருக்கம்

2021 முதல் GitHub கணக்குக் கடவுச்சொல் HTTPS வழியாக Git-உடன் வேலை செய்வதில்லை. மூன்று நடைமுறை வழிகள் உள்ளன: உலாவியில் Git Credential Manager மூலம் உள்நுழைவது, GitHub token உருவாக்கி கடவுச்சொல்லுக்குப் பதில் உள்ளிடுவது, அல்லது SSH விசைகளுக்கு மாறுவது. Token Settings → Developer settings-இல் உருவாகிறது; அதை credential.helper சேமிக்கிறது; Authentication failed பிழையில் பெரும்பாலும் token-ஐ மீண்டும் உருவாக்குவதும் பழைய தகவல்களை அழிப்பதும் உதவும். GitHub-உடன் இணைதல் மற்றும் தொலைதூர களஞ்சியங்களுடன் வேலை செய்தல் Git பாடநெறியில் நடைமுறையில் விளக்கப்பட்டுள்ளன.

## FAQ

**உருவாக்கிய பின் GitHub token-ஐ மீண்டும் பார்க்க முடியுமா?**

முடியாது, GitHub token-ஐ ஒரு முறை மட்டுமே காட்டுகிறது. நீங்கள் அதைச் சேமிக்கவில்லை என்றால், பழைய token-ஐ நீக்கிவிட்டு புதியதை உருவாக்குங்கள்.

**பொது களஞ்சியத்தை git clone செய்ய token தேவையா?**

இல்லை; பொது களஞ்சியங்களை அங்கீகாரம் இல்லாமலேயே clone செய்யலாம், git pull மூலம் புதுப்பிக்கலாம். Token தனியார் களஞ்சியங்களுக்கும் git push-க்கும் தேவை.

**Token-இன் காலம் முடிந்தால் என்ன ஆகும்?**

Git Authentication failed பெறத் தொடங்கும். புதிய token-ஐ உருவாக்குங்கள் (அல்லது பழையதில் Regenerate அழுத்துங்கள்), சேமித்த அங்கீகாரத் தகவல்களை நீக்குங்கள், அடுத்த push-இல் புதிய token-ஐ உள்ளிடுங்கள்.

**GitHub token இரு-காரணி அங்கீகாரத்துடன் வேலை செய்யுமா?**

ஆம், 2FA இயக்கப்பட்டிருந்தால் அதுதான் தேவை: Git செயல்களுக்கு கடவுச்சொல், உறுதிப்படுத்தல் குறியீடு இரண்டுக்கும் பதிலாக token பயன்படுகிறது. உலாவி வழியாக உள்நுழையும்போது Git Credential Manager உலாவியிலேயே 2FA சரிபார்ப்பை நிறைவு செய்கிறது.

**Git உள்நுழைவுப் பெயரையும் கடவுச்சொல்லையும் எங்கே சேமிக்கிறது?**

Git தானே சேமிப்பதில்லை; அதை credential helper செய்கிறது: Windows Credential Manager, macOS Keychain, Linux Secret Service, அல்லது store helper பயன்படுத்தும்போது ~/.git-credentials கோப்பு.


---
Source: Skillaria.Top (https://skillaria.top)
