- 1. Create SSH key pair
- 2. Copy public key to the remote server:
- 3. Add private key to the SSH agent:
- 4. Add the remote host to SSH config (just for convenience):
1. Create SSH key pair
It is fairly simple to create a SSH key pair as
ssh-keygen will guide you through the whole process.
ssh-keygen -t ed25519 -C "firstname.lastname@example.org"
-C is a comment that will be added at the end of the public key.
The series of questions after you run the above code looks something like:
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/sunny/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again:
You can choose to use all default values or enter your own.
Once it is complete:
- The public key is now located in
- The private key is now located in
2. Copy public key to the remote server:
Let’s say, the remote server is running SSH on a non-standard port. If your remote server is using the standard port, you can omit the port settings:
ssh-copy-id -i ~/.ssh/id_ed25519 -p 123 sunny@remote_server_address
.pub is automatically added if you specify a filename that does not end with
This will add your public key to the remote server’s
~/.ssh/authorized_keys file. If you open it up, you will see the comment you added when generating via
-C flag in step 1.
3. Add private key to the SSH agent:
[Optional] Start the ssh-agent if it isn’t already. If you are not sure, skip it for now and come back if the next step fails.
eval "$(ssh-agent -s)"
Add your SSH private key to the ssh-agent.
If you are curious which keys ssh-agent knows about, run:
4. Add the remote host to SSH config (just for convenience):
For simplicity, you can add the remote host to your SSH config file (
~/.ssh/config). If this file does not exist, you can create it manually (
Add a block like this:
Host remote_server_name HostName 123.45.678.90 User sunny IdentityFile ~/.ssh/id_ed25519 Port 123
Now you can SSH to the server by:
ssh -i ~/.ssh/id_ed25519 -p 123 email@example.com