One of the greatest improvements introduced by the SSH protocol is key-based authentication – meaning your client and SSH server establish validity of your SSH keypair and let you gain remote SSH access without asking for your password.[Read more…] about Deploy Your SSH key To Remote Server
SSH is such an integral part of everyday Linux/Unix life now, that it makes sense to use it for as many remote access and automation tasks as you can. As you probably know, you shouldn't be using password SSH authentication unless you have a pretty good reason to do so. By default, always use SSH keys. Today I'll show you how to generate SSH keys.
Generate SSH key with ssh-keygen
ssh-keygen is a standard utility supplied with SSH package. If you have ssh command on your system, you probably have the ssh-keygen command as well.
Without any command line options, ssh-keygen will ask you a few questions and create the key with default settings:
[greys@rhel8 ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/greys/.ssh/id_rsa): Created directory '/home/greys/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/greys/.ssh/id_rsa. Your public key has been saved in /home/greys/.ssh/id_rsa.pub. The key fingerprint is: SHA256:Seu7UBogeX+g9+iv01CDJqiXAby740JKZGrZtu1T3oQ greys@rhel8 The key's randomart image is: +---[RSA 2048]----+ |. | |.. . | | .+.o ... | | +oo.+oooo | |+.+o.o+.S. | |o*oo ..E . | |=.o o *o= | |oo . +.o.o | |o.. ..+++. | +----[SHA256]-----+ [greys@rhel8 ~]$
Specify SSH key size for ssh-keygen
Most likely you'll have your preferences for SSH keys and it is much easier to just specify them when running the ssh-keygen command.
This is how one can generate 4096-bit key, for example:
[greys@rhel8 ~]$ ssh-keygen -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/greys/.ssh/id_rsa): /home/greys/.ssh/rsa-4k Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/greys/.ssh/rsa-4k. Your public key has been saved in /home/greys/.ssh/rsa-4k.pub. The key fingerprint is: SHA256:4rf1AGIc99L57/xC1PWu7pJpwhkn5YCmZQqua/XdmGA greys@rhel8 The key's randomart image is: +---[RSA 4096]----+ | | | .| | . .. .o| | .. o=o... . o| | . .=*S ++ . . | | ooEo oo.o . .| | o o.o.=o=.+ . | | o ..+o=o=oo | | ... . o.=*o.| +----[SHA256]-----+
Good news, everyone!
Starting yesterday, GitHub allows free accounts to have unlimited number of private repositories. The number of collaborators for such repos is limited to 3, but this is still a massive improvement and something I've personally been faiting for. There's just too many little things in a sysadmin's life that could benefit from git tracking but won't justify a premium price tag.
Updated GitHub pricing
This is how pricing looks now:
How To Create a Private Repository in GitHub
Assuming you already have a GitHub account and you're logged in, creating new repository is fairly straightforward:
Previously, selecting the Private type of repo would show a pop-up asking for paid upgrade of your account, but as you can see on the screenshot above, this is not the case anymore!
Once you click the Create Repository button, you should see your brand new repo:
Adding your SSH key to GitHub repository
If you haven't done this yet, now would be the time to access Settings in your profile (open URL https://github.com/settings/profile in another browser tab) and go to the SSH and GPG keys section there.
This will let you upload your existing SSH key that you later can use for accessing your GitHub repositories:
As seen on the screenshot, you provide some title to the SSH key and then copy-paste the whole key (I'm not including it in the screenshot fully).
The good sign that your key is added should be something that shows it like this:
Connecting to your GitHub repo using SSH
Going back to your GitHub repository, in the top right section you should see a green button called Clone or download. If you click it, you'll see a window with URL to your private repo. Don't forget to click the Use SSH there and you should see something like this:
Copy this onto your Linux/Unix desktop and run this in the command line:
greys@maverick:~/proj/unixtutorial/github $ git clone email@example.com:greys/unixtutorial.git
Cloning into 'unixtutorial'…
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
You should see a new subdirectory created in your location:
greys@maverick:~/proj/unixtutorial/github $ ls
and if you change into that directory, it would contain your private GitHub repository copy – which at this early stage only has the README.md
file:greys@maverick:~/proj/unixtutorial/github $ cd unixtutorial/
greys@maverick:~/proj/unixtutorial/github/unixtutorial $ ls
That's it! Hope you like the good news about free private GitHub repositories and stay tuned for more news and Unix/Linux How-To's!