# 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
```
