# Criar key-pair no EC2

Antes de criarmos a instância, é *extremamente* necessário deixá-la segura. Uma das medidas de segurança passa por criarmos um **par de chaves** onde, ao entrarmos na instância via SSH (porta 22), enviamos uma parte da chave que será utilizada para verificar sua autenticidade *com a outra parte, guardada previamente* no servidor. Desta forma, qualquer acesso SSH sem a chave será negado.&#x20;

A este par de chaves damos o nome de [criptografia assimétrica](https://en.wikipedia.org/wiki/Public-key_cryptography), onde a chave guardada no computador do user é a **privada** e a outra parte guardada no servidor é a **pública**.

Para nossa sorte, a AWS permite criar um par de chaves via CLI. A chave pública fica guardada na nossa conta da AWS e pode ser utilizada nas instâncias que iremos criar. E no output do comando, vamos extrair o conteúdo da chave privada para guardarmos no nosso computador e utilizá-la quando quisermos acessar as instâncias que iremos criar.

```bash
aws --profile personal ec2 \
    create-key-pair \
    --key-name aws-ec2-key \
    --key-type ed25519 \
    | jq -r '.KeyMaterial' > ~/.ssh/aws-ec2-key.pem
```

* `ec2` é o nome do serviço na AWS
* `create-key-pair` é o nome da ação&#x20;
* na opção `key-name` especificamos o nome da nossa chave na AWS
* com `key-type` escolhemos o [algoritmo de criptografia](https://en.wikipedia.org/wiki/EdDSA)
* depois, com [pipe](https://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html) (`|`), mandamos o output para ser extraído conteúdo da chave privada com `jq`
* no fim, jogamos (`>`) o output final com a chave privada em um arquivo chamado `~/.ssh/aws-ec2-key.pem`, que será utilizado posteriormente quando entrarmos nas instâncias com SSH

#### Verificando que a chave foi criada

```bash
leandronsp:~ $ aws --profile personal ec2 \
    describe-key-pairs \
    | jq -r '.KeyPairs[0].KeyName'
    
aws-ec2-key
```


---

# Agent Instructions: 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:

```
GET https://aws101.leandronsp.com/criar-key-pair-no-ec2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
