> For the complete documentation index, see [llms.txt](https://docs.termius.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.termius.com/help-center/faq/how-to-migrate-from-multikey-to-ssh-id.md).

# How to migrate from MultiKey to SSH ID?

{% hint style="warning" %}
**MultiKey is deprecated.**\
MultiKey will no longer be available after **September 15, 2026**. Please migrate to SSH ID or other authentication method before then.
{% endhint %}

SSH ID is a passkey for SSH. It generates a device-bound key on each of your devices and keeps all public keys synced and available at a single URL: `https://sshid.io/<your_handle>`. Anyone can use this URL to fetch your public keys and provision them on a host. To learn more, see [What is SSH ID](/ssh-id-passkeys-for-ssh/what-is-ssh-id.md).

## Prerequisites

Before you start the migration, make sure every team member who needs access to your hosts has an SSH ID. To learn more, see [Set up SSH ID](https://docs.termius.com/ssh-id-passkeys-for-ssh/setup-and-usage).

Once a teammate sets up an SSH ID, they get a personal handle – `https://sshid.io/<handle>` – where all their public keys are available. You can use these handles to provision keys on your servers as described below.

<figure><img src="/files/YlTGPTjjSwAt1YlxMHP7" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
We recommend each user to add at least two devices to their SSH ID, or keep a backup authentication method, to avoid losing access if a device is lost or unavailable.
{% endhint %}

## Copy public keys from SSH ID

Termius provides two options to copy public keys from the teammates SSH IDs depending on how you want to provision them on your servers.

In the `Settings` -> `Vaults`, if you click the `SSH ID` button next to the vault, a context menu will appear listing all teammates and showing who has an SSH ID set up.

<figure><img src="/files/iNIqx4sdTBZ9LoMGnl4u" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Copy passkeys" %}
Click `Copy passkeys` to get all public keys in a plain text from every teammate's SSH ID at once. Use this when you want a quick bulk export.

{% code title="Example of the public keys list for all team members" %}

```
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFzXFdcRM9Z0cNmmTDlROhkfBRift5vJDenXMxTL5MRXFAJAjsQDJLJLw/XH8Ci1NdIOrtjqCg4+kVkoDM/U3U4= #SSH ID - @leah
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEZ2f+QtSzEUMNe3ySXjN8IQkrQAgZY9Jf7IgS4kZUTwDrOeNnBUviY3f5zs2uCGvDASSelh6JlriLIEY7MAPWY= #SSH ID - @stan
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEZ2f+QtSzEUMNe3ySXjN8IQkrQAgZY9Jf7IgS4kZUTwDrOeNnBUviY3f5zs2uCGvDASSelh6JlriLIEY7MAPWY= #SSH ID - @alex
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJEoHbJNnuArSyosAJrRw5OoeNfMKGk0XJLtC8GCabMT #SSH ID - @leah
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgHSPAmZsDMO4+RhPQ+9Ip2faPorU0OIMRpOtx26jCZ #SSH ID - @stan
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE4CrG4Uzhc+89MUu8rr2nw/6Jobrfc7sKFBwDIWw157 #SSH ID - @alex
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAjAYqGIk6hRbGEn+KJEN6OjqtcB8zzg/WsOGKErVp+c+vKRXCpZo5xO1qldblbF2Z83GU8fXltw6YKH2QLdYesnAGrEW0D6TsmuGhaXA0LqJrG6Buj8+uYrmYCwCtazaNcogTB1sNaRqhD+2NGLHO9woa9K8ipQxHrDHufrD3UA+RimA== #SSH ID - @leah
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBABYnYjphM0DiWJh5FTX8W+dbB2Up+o/60Z9cunZrOOPFxklGkg1zJGdXFiikcPgxV9Mtq09KOA7JorrpaBxbr1pCABjzEVgMiof+Xjy26mxkiUDmiJ9aFsW8Xroh2Q68n8szrJ/MOxJpvfMFOofYqeiuFzk2dbqSwkkbfnJ6RoAu3XPTg== #SSH ID - @stan
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAHkW4nVwgisKE7JzMBr69CzlblGVxN9YuhqT9ZDewrzT8QhYVTFnEmYh/rFPl+ikUsCaYyPmaisuXjIV/mIxg5jvABD5qsBxBnIp5OiCo755tmEKbn4NgU94yLS24pVLP1FpXmhZTYTwe/mC6lXk/MBSakMBlro8rw6O0SoXTUh0R4SKg== #SSH ID - @alex
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDNPrFFGonE7YKpx4mYZAH1XvfSEeNvjjwov/j9Uj+9GbDoMGvHEr3agW4lYDmJ+FbnkhygmzHh7+abDJlZarqt3zzNROwPINCogJRg/Tz4XGXPM3Hi8dV7+7e4F3O1mhNHQl8d+8TdIjDwR9oHdPoWxjT2B6YebutPsXJ+qdg4TMZGYoMOd9NNZz8HV/zb8oK7M5zryTbzQrD+6erpkIO7B5U6VAmn/VPsk7CENN5OzAmqym6Ctd0Op/Jj6kupBDyqLx+CrWF/CHuYYTIyss+f1sSzf1+c504+W6qu2ZZnX6u4vBBYiOQlJewk866K3XGB5+42TS4ZYl46n5rs69Jr/zoHUfk5mtSNnWqgcVjLY8WAq0E3wBOFEtoudOgv3ACFz++DxWFLuDbWroT4Tpi41H/gOZwSeciD/82TG8uAykMmjr8XL+t1qVpaYDPe55/+OzXf5aA/qsEAah4DptETyj8vgtJo0xbOZ2Pn13bCUkvXsKCzNCgNxWTdzbu3RLabPeIgDNK/fiheTQfn/mhvxO38yxoqgEGpIgSAxNXF7ADKLyhjSYrRxgUQzCl4FvHs4LyYB3NY0KeqDsODBo32vrGi2lG7nnMQUynvajufk9ogPEwZ0WoiHcEY/leKkRM+DXMqihyQSEOWGNSsytj3ItR3vq1pE0sYmoiLY8DZiQ== #SSH ID - @leah
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1GLYuU0sOiMIcbxm4rT+rmcNmbsaMxWLUC6+etlrZZ/ZU7GwVaOvB2E1MGKe3OUA/i0kZv581yyUBdfwC7CxEFDev4YekG09Rby/OQc2BPAWyXRwxAzxAPiE2g432o0A2MCqMnVEOIqLC60mL9PeJgECHmTN1J1SCsc/8O0vbbXdIqQ+7123bWLrp3/ZOaeQi6lpbP7YdUsVMwH1KNk/IUtfQkDJYitGPyodhZZBwWHU137h+BK4vQfYT25f0EKB9bWyFLitL2yFmoJLMXzVsdPfpTDemFrqSaK3sz5dCJoPpJL1xw7DB2j0sBMBLlPvjvpJvMxUvDw1r0u/mB7fJQF1NlkGUlCc5He3c+BqpE4uNVEOtmncYkuvEZb3/Nvf/PejI50TlWzJiasj35fBW564HPnTq+B8zJgE53XTILhJtQJjQyQjlGwTlRT9KeOZVcATHpic8depF6D+5AE927/cfnY2Gp0+q8bE0qgQh54JZt2H9cKHngh2iHBaJTVFwIYesc76okdPuk0Efj/gWBBYxcexaof288PU8Y7iLBz5oNBv0EZxASfgx7Q92BAgdeFxOrUglADndWOOOd1+I4WgjrngXVtQ1CeKtNNxi8UI848UZQUQbBAZHEYQ2NmVxb72tQlv/rxNSnQ3/Fhv3dpRmC0tRE95vlnexT/wayw== #SSH ID - @stan
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC79n6dPU0Sxl/J1gwPy3WZMHWku6vfY92w0/CwDsZakdx5c9WbyUofRrkomqPuSc9BW6aeAk3kfTemlVQZiuDlPMvd7U4//Ri2SyGd8JpaXxZ8xEk/ZkwBukin9+vAkH5Ux3bnuyvKKpGYViL96WS2ebtR+IzpKTZojgbwOgGtXQKR2HmkWGmw4Tca0XOredg/KafVLnXGuVqgegrvCCcHBWZ1V76PzrbnKccFaQ3O9IoLVjGNxRzXqMPtaX1CtTTkH+y+vrdrTyIjhTHj9eofa4eWv9g5jGfgOWMUzZipQfbjWA8Pa3Vq20ZhSLBV4LXqrl7PY7HLbuLfBXvzh2ISWrJ2ePWT0u1cCBF/TTC8TzTJQKPdxR+SnyjC57lsAGqzBCMnYrYTNcWBYTJjc0e5SFkrjjXm0UjcJvuBZeW0Ge+SJ+maizliNWY9jfWuJVNxlBEu8gAAtHNS6GXtoclFQxOt/32qsVhTAOqWd9DQopcUaVnQDAmtcmXijm5msOp0SGUJSvBENMe5KJik6nwCck0RR3fwDyDyn4yM/GHCZgbQlCb0FtFwiKZ1rfxVyspDvNa2LY8as0TPIyUgUqNZpgXnkoRvIMPKEmJsRVqe2R9mUCIyvgoPsFoq2SBZ+VTsiW1ObKJinHHzszXRZR1ybE1R9NDl5wQbtjF9KxNZ1w== #SSH ID - @alex
```

{% endcode %}
{% endtab %}

{% tab title="Copy SSH IDs" %}
Click `Copy SSH IDs` to get a list of public profile URLs for all teammates. Use it when you want to provision public keys automatically via a script.

{% code title="Example of an SSH ID profile URL list" %}

```
https://sshid.io/leah
https://sshid.io/stan
https://sshid.io/alex
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Update the `authorized_keys` file on each host

Connect to the host that currently uses MultiKey and update its `authorized_keys` file.

<figure><img src="/files/CaLZZjUaHrRu2OmNinTx" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="If you used 'Copy passkeys' " %}
Paste the copied keys directly into the server's `~/.ssh/authorized_keys` file. Remove any key types your server does not require. For example, if your server only accepts ECDSA-SK, remove all other key type entries.

<figure><img src="/files/431CndaAdvGXYHxkvhd0" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="If you used 'Copy SSH IDs'" %}
You can use the profile URLs to provision keys via a shell script. For example, a script for a team of three can look like this:

{% code title="provision\_keys.sh" %}

```bash
#!/bin/bash

# Optional: set a specific key type (ECDSA-SK | ECDSA | ED25519 | RSA)
# Leave KEY_TYPE empty to use each user's default key type as configured in their SSH ID profile
KEY_TYPE=""

links=(
  https://sshid.io/leah
  https://sshid.io/stan
  https://sshid.io/alex
)

for link in ${links[@]}; do
  curl -fs $link/${KEY_TYPE} >> ~/.ssh/authorized_keys
done
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Set SSH ID as the authentication method

Once the `~/.ssh/authorized_keys` file is updated, every user must switch the SSH ID authentication method on each host they need to access:

1. Open `Host Details` for the host

   <figure><img src="/files/Craztm55fEan331oTgpF" alt=""><figcaption></figcaption></figure>
2. Scroll to the **Credentials** section and select `Personal vault` instead of Multikey

   <figure><img src="/files/YCGYxKYLXbbSDXXYXBpZ" alt=""><figcaption></figcaption></figure>
3. Enter the `username`. If no username is set, your SSH ID handle is used as the default username

   <figure><img src="/files/17ofD5NADsAdW5Nqi61N" alt=""><figcaption></figcaption></figure>
4. Click `+ SSH ID, Key, Certificate, FIDO2`

   <figure><img src="/files/zIbGdSpSTtHcpdZnrBQV" alt=""><figcaption></figcaption></figure>
5. Choose `SSH ID` as the authentication method

   <figure><img src="/files/B0l9T5li5Jb1BQc2Czj5" alt=""><figcaption></figcaption></figure>
6. Repeat this for every host you want to connect to

## Verify the migration

1. Connect to each host using SSH ID to confirm the connection works

   <figure><img src="/files/hRqNdz1Y9pz0EHzmchbp" alt=""><figcaption></figcaption></figure>
2. Check that no hosts remain configured with MultiKey


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.termius.com/help-center/faq/how-to-migrate-from-multikey-to-ssh-id.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
