GitHub Personal Access Token and SSH
Basic authentication is the use of username and password for authentication. For sometime GitHub will accept Basic authentication, the use of username and password, to access repositories on GitHub - to clone, push and pull. The Basic authentication will be deprecated very soon this year, 2021.
GitHub also allows:
- Username and password with two-factor authentication
- Personal access token (PAT)
- SSH key
Create the PAT
The PAT can only be used over HTTPS Git operations
- On GitHub, signup if you don't have an account or login if you already do have one
- At the top right corner, click on your avatarand click onSettingsfrom the drop-down
- On the left side of your Setting Profilepage, click onDeveloper settings
- Click on Personal access tokenon the next page
- At the right, click on Generate token
- Give the token a name or description and check some privileges you want to give to the token
- Click Generate token, a green button at the bottom of the page
- Copy the token and save it somewhere safely (It will still be there when you check it)
- If the token is forgotten or you could not save it, regenerate it.
Add token to git
vscode is my go-to text editor for my all-round development. Entering the username and token every time is a nuisance. We would add the token globally to git. For a specific application, we can add the token locally. The token would be used as the password.
Reminder
If this was your first time actually using git then you have to set yourusername.git config --global user.email "your@example.com"andgit config --global user.name "Your Name".
- git config --global credential.helper store
- Now clone, push or pull with usernameand copiedtokeninstead of thepassword
If you get an error message saying something like, Support for password authentication was removed ... then you can do set up the token in a different way.
- look for a hidden file named, .git-credentials. It is a hidden file to either you checkshow hiddenfiles. It is located in the root of the user directory./home/user/.git-credentials.
- add the line, https://<YOUR_USERNAME>:<YOUR_PAT>@github.com
- save and exit.
Now you can push successfully.
SSH
- For the sake of testing, let's create a dummy repository on GitHub. Choose the default settings. (Do not close the page or the browser)
- I am on Ubuntu so I will install ssh on Ubuntu.
- Update and install openssh-server:sudo apt updatethensudo apt install openssh-server
- 
sudo systemctl status sshto check thesshstatus then hitqto get back to the terminal
- 
sudo ufw allow ssh, for the firewall to allowsshconnection. This enables us to connect to our Ubuntu system via SSH from any remote machine.
- 
sudo systemctl disable --now sshto disablesshandsudo systemctl enable --now sshto enablessh
- Generate sshkey,ssh-keygen -t ed25519 -C "your_email@example.com".
- Hit enter to use the default settings for the file name/path to save your key
- Enter and hit enter for the passphrase and reenter the passphrase and hit enter again
- Start the ssh-agentin the background to add add key tossh-client:eval "$(ssh-agent -s)"
- 
ssh-add ~/.ssh/id_ed25519then enter the passphrase used initially to add key to client
- We can now add the ssh public key to Github. We can cat the public key then copy it or open the public key in a text editor and then copy it.
- 
gedit ~/.ssh/id_ed25519.pubwill open the public key in gedit. Copy it.
- On Github just as we did for the toke, go to the top right corner of the page and click on the avatar
- Click on Settingson the drop-down
- Click on SSH and GPG keys
- Click New SSH keyorAdd SSH key.
- add a titleand then paste thepublic keyfrom the text editor into thekeyfield
- Then click on add SSH Keyand we are done adding ssh key to Github
- The dummy repo we created earlier would have a URL, https://github.com/username/dummyrepo.gitif we were to use HTTPS but for the SSH,git@github.com:username/dummyrepo.git
- Let's clone the project from Github using SSH, git clone git@github.com:username/dummyrepo.git
- 
cd dummyrepoand thenecho "# dummyrepo" >> README.md
- 
git add README.mdandgit commit -m "README.md"to add and commit theREADME.md
- 
git push origin mainto push the committed code.
Switch from HTTPS to SSH URL
Say you have the repo already using HTTPS then you have to change the URL on your local server.
- HTTPS url: https://github.com/username/dummyrepo.git
- SSH url: git@github.com:username/dummyrepo.git
- 
check the git url, git remote -vwhich will display- origin https://github.com/username/dummyrepo.git (fetch)
- origin https://github.com/username/dummyrepo.git (push)
 
- to change from HTTPS to SSH, - git remote set-url git@github.com:username/dummyrepo.git
- 
check the git url verify the changes, git remote -v- origin git@github.com:username/dummyrepo.git (fetch)
- origin git@github.com:username/dummyrepo.git (push)
 
 
 
              
 
    
Top comments (2)
on this part:
If you get an error message saying something like, Support for password authentication was removed ... then you can do set up the token in a different way.
look for a hidden file named, .git-credentials. It is a hidden file to either you check show hidden files. It is located in the root of the user directory. /home/user/.git-credentials.
add the line, https://:@github.com
Where exactly do I add the line? Sorry for the newbie question!
you add it into the
.git-credentialsfilesomething like:
https://GITHUB-USERNAME:TOKEN@github.comif the
.git-credentialsfile doesn't exist, you can create one yourself