Create and Upload SSH keys

Discover how to generate, upload, and use SSH Keys for automated server logins using simple Bash commands. Enhance your SSH workflow while ensuring secure communication between untrusted hosts.

SSH is an integral part of cloud, network, and system administration as it provides secure encrypted communications between two  hosts over an insecure network. Notably, it enables the transfer of files and management of remote servers.

This article will guide you through three essential Bash commands for handling SSH tasks: Generating a new SSH key, uploading the SSH key to a server, and creating an SSH config for the server for automated login.

1. Generate a new SSH key

You can generate a new RSA SSH key pair (public and private) using the following command:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Replace "[email protected]" with your choosen "id". The system will prompt you for the key pair's filename (default being id_rsa), and an optional passphrase for private key security.

2. Upload the SSH key to a server

The next step involves copying your public key ( to the remote server's authorized_keys file:

ssh-copy-id -i ~/.ssh/ user@server

Replace user with your username and server with the server's hostname or IP address. This lets the server authenticate your future connections using your private key.

3. Create an SSH config for automated login

Finally, set up automated login with the ~/.ssh/config file:

cat <<EOF >> ~/.ssh/config
Host server
   HostName server
   User user
   IdentityFile ~/.ssh/id_rsa

Replace server and user with your actual values. The configuration file for SSH, the ~/.ssh/config file, directs your system to use your chosen identity file (id_rsa) for server authentication.

Wrapping Up

Securing your .ssh directory and the id_rsa and files is crucial. Use the following commands to restrict permissions:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/

In this way, your Bash commands can assist you with SSH tasks, including generating a new SSH key, uploading it to a server, and setting up automated logins. Secure communication between hosts has never been simpler with these steps in place.