Configure Github SSH Keys
This is a quick post on how to configure GitHub SSH keys. The GitHub documentation is pretty good with this, so this post is more of a personal note.
The advantage of using GitHub SSH keys is that you do not need to provide the username and password of your GitHub account each time. This makes it easier to work with GitHub, more specifically private repositories in my opinion.
To add the SSH keys you need to
- Create SSH keys
- Import the SSH key to GitHub
- Save SSH key in Linux
1. Create SSH Keys
Here we have the option of using RSA 4096 bit keys, or we can use Eliptic Curve 25519 algorithm. The EC-25519 curve is the one that is used in the famous Eliptic Curve Diffie-Hellman key exchange algorithm.
1
2
3
4
# EC-25519
ssh-keygen -t ed25519 -C "your_email@example.com"
# RSA 4096
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
2. Imprt the SSH Key to GitHub
Go to your icon on the top right, Settings, then SSH and GPG keys. Click New SSH Key on the top right. Then copy and paste your public key into the text box, like in the screenshots below.
Import public key
3. Configure Linux with the Key
Two simple commands! The agent PID is likely going to be different for you. Also you need to make sure that you use the correct path to your private key. If you configured a passphrase for your SSH key, you need to type it in here.
1
2
3
$ eval `ssh-agent -s`
# Agent PID ####
$ ssh-add /home/user/.ssh/id_ed_25519
Optional: Persistent SSH Keys
If you would like your configured SSH keys to remain persistent, such as after system reboot, then you should execute the commands listed below. I would like to note that this is for ZSH, it could be different for the Bash shell. Thanks to @UnRunDead for this tip!
Edit your .zshrc and go to plugins=(…) and add ssh-agent
IMPORTANT: put these settings before the line that sources oh-my-zsh
zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
Then reload your terminal: source ~/.zshrc
And that’s all it takes! Now you can test it out 🙂
Test it out
1
2
3
4
5
6
7
8
9
git config --global user.name YourUserName
mkdir project-folder
cd project-folder
git init
echo "# Hello World" > README.md
git add README.md
git commit -m "Frosty Labs Demonstration"
git remote add origin git@github.com:YourUserName/project-folder.git
git push -u origin master