black handled key on key hole

SSH Using Private Key




In today’s digital landscape, secure communication and data exchange are paramount. When it comes to remotely accessing servers and systems, Secure Shell (SSH) has become the go-to protocol for secure and encrypted connections. SSH provides a reliable means of establishing a secure channel over an unsecured network, ensuring confidentiality and integrity of data transfers.

One of the key components of SSH authentication is the use of private keys. Unlike traditional password-based authentication, which relies on shared secrets, private key authentication offers a more robust and convenient approach. In this article, we will delve into the world of SSH using private keys, exploring how this authentication method works, its advantages over other authentication mechanisms, and how to set it up effectively.

Private key authentication provides a highly secure means of logging into remote servers, as it relies on asymmetric encryption algorithms. It involves generating a pair of cryptographic keys: a public key, which is stored on the remote server, and a private key, which is securely held by the client. This approach eliminates the need to transmit passwords over the network, reducing the risk of password interception and unauthorized access.

Server Side

First, let’s create authentication key pairs for SSH using ssh-keygen. You can use different algorithm to generate them.

Bash
ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa 
ssh-keygen -t ecdsa -b 521
ssh-keygen -t ed25519

Two files will be generated. A public key named id_<algorithm>.pub and a private key id_<algorithm>. You should see your key like this:

Bash
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
......
2Gij/JME8/YQMAAAAVYWRtaW5AREVTS1RPUC1KVlUxM1JCAQIDBAUG
-----END OPENSSH PRIVATE KEY-----

Client Side

Add the private key using ssh-add, and using ssh without entering a username/password:

Bash
ssh-add <(echo "<YOUR-PRIVATE-KEY>")
mkdir -p ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
ssh user@example.com

Or, specify the private key file’s path with:

Bash
ssh -i <PATH-TO-YOUR-PRIVATE-KEY> user@example.com


Leave a Reply

Your email address will not be published. Required fields are marked *

Exit mobile version