> For the complete documentation index, see [llms.txt](https://docs.k9.io/key9-identity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.k9.io/key9-identity/ssh/installation-and-setup/windows-powershell-with-yubikey-fido2-protected-ssh-keys/2.-setting-up-your-ssh-keys.md).

# 2. Setting up your SSH keys

First, verify that you have the latest version of SSH installed. As your regular user, open a PowerShell terminal and type `ssh -V`

<figure><img src="/files/EYyYiTjjmt9GoQJUsWnX" alt=""><figcaption><p>Example output from <code>ssh -V</code></p></figcaption></figure>

Once that has been verified,  execute the following command in Powershell.&#x20;

`ssh-keygen.exe -t ed25519-sk -O resident -O verify-required -O application=ssh:key9.dev`

The -t flag specifies the type of key to be generated by OpenSSH. We intend to use ED25519 with the "Security Key" option, indicated by the -sk  at the end. Additionally, the -O verify-required option mandates the input of a PIN before the SSH key can be utilized.

After execution,  you should see something link the below.   Select the "Security Key" option.

<figure><img src="/files/krsxfzkTp1bgmYobKeA2" alt=""><figcaption><p>Where to save your ED25519 key.</p></figcaption></figure>

You may encounter the following screen,  which you should click on "OK".

<figure><img src="/files/Ososs3I0pLjJXMIDl5sa" alt=""><figcaption><p>The software  is letting you know ssh-sk-helper.exe is about to be executed</p></figcaption></figure>

<figure><img src="/files/LKfAduFrq1QRKaZ2obVr" alt=""><figcaption><p>Continue setup</p></figcaption></figure>

At this point, you'll be ask to enter your Yubikey's PIN.&#x20;

<figure><img src="/files/stXEZYpaM60dO1b3zh2u" alt=""><figcaption><p>Enter your Yubikey PIN number</p></figcaption></figure>

<figure><img src="/files/3qVMRxvi9FxZMh9t3MOn" alt=""><figcaption><p>Touch your key to prove proximity </p></figcaption></figure>

<figure><img src="/files/PnQ5hn3zrpZy3opAkJHU" alt=""><figcaption><p>Screen letting you know the key is setup, but there is more!</p></figcaption></figure>

After you click "okay," it may seem like the setup is finished, but it's not. You will be taken back to a Powershell. In Powershell, you will be asked to enter a "file to save your key" and a "passphrase." If you only have one key, it's best to just press "enter" for the file location.  This is also the default location OpenSSH will look for the key.  &#x20;

When prompted for a "Passphrase", simply hit "enter". Our key will be signed with our Yubikey and there is no need for a "Passphrase".

In short,  you can hit "enter" through all the prompts. &#x20;

You should see something like the below.

<figure><img src="/files/GznIEaFCpKGNynESJ7nH" alt=""><figcaption><p>OpenSSH prompts for key file location and "passphrases"</p></figcaption></figure>


---

# 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.k9.io/key9-identity/ssh/installation-and-setup/windows-powershell-with-yubikey-fido2-protected-ssh-keys/2.-setting-up-your-ssh-keys.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.
