How to generate SSH keys

Guide to Creating and Managing Multiple SSH Keys on Your System

Creating different SSH keys is useful when you have multiple accounts, servers, or services. Here's a straightforward guide on how to create and manage multiple SSH keys on your system:

Step 1: Generate a New SSH Key

To generate a new SSH key, you can use the following command:

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519 specifies the key type. Ed25519 keys are recommended for their security and performance. Alternatively, you can use RSA (-t rsa -b 4096 ) if Ed25519 is not supported by your server.
  • -C "your_email@example.com" is a comment to easily identify the key.

Step 2: Specify a Custom Key Name

When prompted, enter a custom file name to distinguish keys. For example:

Generating public/private ed25519 key pair. Enter file in which to save the key (/home/user/.ssh/id_ed25519): /home/user/.ssh/id_ed25519_github

This will create two files: - Private key: ~/.ssh/id_ed25519_github - Public key: ~/.ssh/id_ed25519_github.pub

Step 3: Add the SSH Key to Your SSH Agent

To use the new SSH key conveniently, firstly ensure your SSH agent is running by executing:

eval "$(ssh-agent -s)"

Then, add your private key to the SSH agent:

ssh-add ~/.ssh/id_ed25519_github

Step 4: Add the SSH Public Key to Your Server or Service

You must add the public key (~/.ssh/id_ed25519_github.pub ) to your server or service (such as GitHub, GitLab, Bitbucket, or your remote server's authorized_keys file).

  • For GitHub/GitLab/Bitbucket: Copy the content of your public key file (cat ~/.ssh/id_ed25519_github.pub ) and paste it in their web interface under your account settings → SSH keys.
  • For remote Linux servers: Append the public key to the authorized_keys file:
ssh-copy-id -i ~/.ssh/id_ed25519_github.pub user@your_server_ip

or manually:

cat ~/.ssh/id_ed25519_github.pub | ssh user@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Step 5: Using Different SSH Keys for Different Hosts

Edit your SSH configuration file (~/.ssh/config ) to specify which key should be used for which host:

vim ~/.ssh/config

Example content:

``` Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github

Host myserver HostName your_server_ip User your_username IdentityFile ~/.ssh/id_ed25519_server ```

After this configuration, you can connect directly with:

ssh myserver

or clone repositories directly from GitHub without further configuration.

Step 6: Test Your Setup

Test the SSH key setup by connecting to your server or service:

ssh -T git@github.com

or

ssh your_username@your_server_ip

If configured correctly, you'll see a successful authentication message.

Summary

You can create and manage multiple SSH keys by:

  1. Generating keys with unique names.
  2. Adding them to your SSH agent.
  3. Specifying which key to use for each host in your SSH configuration.

This approach helps you manage multiple accounts and servers securely and efficiently.


© Deploy Linux Blog