MEHDI.
RETURN_TO_INDEX

SSH Keys Explained: From Generation to Deployment

2 min read
#Security#DevOps#SSH#Linux

Introduction

As a developer, I've found that using SSH keys is a crucial step in securing access to my servers. In this article, I will explain the process of generating and deploying SSH keys, covering key types, adding keys to the ssh-agent, and common permission issues.

Key Types

There are two main types of SSH keys: RSA and Ed25519. RSA keys are the traditional choice, but Ed25519 keys offer better security and performance. Here's an example of how to generate each type:

# Generate RSA key
ssh-keygen -t rsa -b 4096

# Generate Ed25519 key
ssh-keygen -t ed25519

Generating SSH Keys

To generate an SSH key pair, you can use the ssh-keygen command. By default, the key pair will be saved in the ~/.ssh directory. You can specify a custom location using the -f flag.

# Generate key pair with custom location
ssh-keygen -t rsa -b 4096 -f ~/my_ssh_key

Adding Keys to ssh-agent

The ssh-agent is a program that runs in the background and manages your SSH keys. To add a key to the ssh-agent, you can use the ssh-add command.

# Add key to ssh-agent
ssh-add ~/my_ssh_key

Deploying SSH Keys to Servers

To deploy your SSH key to a server, you can use the ssh-copy-id command. This command copies the public key to the server and adds it to the authorized keys file.

# Copy public key to server
ssh-copy-id user@server

Common Permission Issues

One common issue when working with SSH keys is permission errors. On Windows, the ~/.ssh directory may not have the correct permissions, causing the ssh-agent to fail. To fix this, you can run the following command:

# Set permissions for .ssh directory on Windows
icacls ~/.ssh /reset

On Linux and macOS, you can use the chmod command to set the correct permissions.

# Set permissions for .ssh directory on Linux/macOS
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

Practical Takeaways

To get started with SSH keys, remember to:

  • Generate a key pair using ssh-keygen
  • Add the key to the ssh-agent using ssh-add
  • Deploy the public key to your server using ssh-copy-id
  • Check permissions on the ~/.ssh directory and adjust as needed