How to Add SSH Public Keys to DigitalOcean Teams

Add public SSH keys to DigitalOcean teams to make it easier to add keys to new Droplets during creation.

When you create a new Droplet, you can automatically add SSH keys on your team to the Droplet. This lets you connect to the Droplet with SSH keys from the start without having to manually configure SSH key authentication.

It’s safe to freely share your SSH public key because it cannot be used to re-create the private key. It can only be used to validate the user who holds the associated private key.

Add an SSH Key to a DigitalOcean Team with the Control Panel

To add an SSH public key to a team, log in to the control panel and make sure you are logged in to the team you want to use.

In the left menu, click Settings, then click the Security tab at the top of the page to go to the team security settings page. The SSH keys section lists any keys already added to the team.

The SSH Key section of the team security page with one key listed

Click Add SSH Key to open the New SSH key window.

Copy your public key into the Public Key field. Enter a name in the Key Name field, which you use identify this key in the DigitalOcean Control Panel. We recommend using the name of the machine you copied the public key from.

Tip

Can’t find your key pair? By default, your key files are saved to the hidden SSH folder in your home directory, and your public key ends in .pub.

  • On Linux, your public key is typically /home/your_username/.ssh/id_rsa.pub.
  • On macOS, it’s typically /Users/your_username/.ssh/id_rsa.pub.
  • On Windows, it’s typically /Users/your_username/.ssh/id_rsa.pub. If you generated your key pair with PuTTYgen, you need to use PuTTYgen to view the public key in the appropriate format.

Finally, click Add SSH Key to add the key to your team.

In the menu next to each key in the table, you can edit the key or delete it entirely. Deleting an SSH key from a team only removes the ability to create new Droplets with that key already added. It does not remove that SSH key from any Droplet’s SSH configuration.

Automate Adding an SSH Key to a DigitalOcean Team

How to Add an SSH Key to Your DigitalOcean Team Using the DigitalOcean CLI
  1. Install doctl, the DigitalOcean command-line tool.

  2. Create a personal access token and save it for use with doctl.

  3. Use the token to grant doctl access to your DigitalOcean account.

              doctl auth init
              
  4. Finally, run doctl compute ssh-key create. Basic usage looks like this, but you can read the usage docs for more details:

                doctl compute ssh-key create <key-name> [flags]
              
How to Add an SSH Key to Your DigitalOcean Team Using the DigitalOcean API
  1. Create a personal access token and save it for use with the API.

  2. Send a POST request to https://api.digitalocean.com/v2/account/keys

    cURL

    Using cURL:

                    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
      -d '{"name":"My SSH Public Key","public_key":"ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example"}' \
      "https://api.digitalocean.com/v2/account/keys" 
                  

    Go

    Using Godo, the official DigitalOcean V2 API client for Go:

                    import (
        "context"
        "os"
    
        "github.com/digitalocean/godo"
    )
    
    func main() {
        token := os.Getenv("DIGITALOCEAN_TOKEN")
    
        client := godo.NewFromToken(token)
        ctx := context.TODO()
    
        createRequest := &godo.KeyCreateRequest{
            Name:      "My SSH Public Key",
            PublicKey: "ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example",
        }
    
        transfer, _, err := client.Keys.Create(ctx, createRequest)
    }
                  

    Ruby

    Using DropletKit, the official DigitalOcean V2 API client for Ruby:

                    require 'droplet_kit'
    token = ENV['DIGITALOCEAN_TOKEN']
    client = DropletKit::Client.new(access_token: token)
    
    ssh_key = DropletKit::SSHKey.new(
      name: 'My SSH Public Key',
      public_key: 'ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example'
    )
    client.ssh_keys.create(ssh_key)
                  

    Python

                    import os
    from pydo import Client
    
    client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
    
    req = {
      "public_key": "ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example",
      "name": "My SSH Public Key"
    }
    
    resp = client.ssh_keys.create(body=req)