

# Criar um par de chaves para sua instância do Amazon EC2
<a name="create-key-pairs"></a>

É possível usar o Amazon EC2 para criar seus pares de chaves ou usar uma ferramenta de terceiros para criar seus pares de chaves e depois importá-los para o Amazon EC2.

O Amazon EC2 é compatível com as chaves SSH-2 RSA de 2.048 bits para instâncias do Linux e do Windows. Além disso, o Amazon EC2 é compatível com chaves ED25519 para instâncias do Linux.

Para obter as instruções sobre como se conectar à instância depois de criar um par de chaves, consulte [Conectar-se à instância do Linux usando SSH](connect-to-linux-instance.md) e [Conectar-se à instância do Windows no usando RDP](connecting_to_windows_instance.md).

**Topics**
+ [Criar um par de chaves usando o Amazon EC2](#having-ec2-create-your-key-pair)
+ [Criar um par de chaves usando o AWS CloudFormation](#create-key-pair-cloudformation)
+ [Criar um par de chaves usando uma ferramenta de terceiros e importe a chave pública para o Amazon EC2](#how-to-generate-your-own-key-and-import-it-to-aws)

## Criar um par de chaves usando o Amazon EC2
<a name="having-ec2-create-your-key-pair"></a>

Quando você criar um par de chaves usando o Amazon EC2, a chave pública será armazenada no Amazon EC2 e você armazenará a chave privada.

É possível criar até 5.000 pares de chaves por região. Para solicitar um aumento de cota, crie um caso de suporte. Para obter mais informações, consulte [Criação de um caso de suporte](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case) no *Guia do usuário do Suporte*.

------
#### [ Console ]

**Para criar um par de chaves usando o Amazon EC2**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, em **Rede e segurança**, selecione **Pares de chaves**.

1. Escolha **Create key pair (Criar par de chaves)**.

1. Em **Name (Nome)**, insira um nome descritivo para o par de chaves. O Amazon EC2 associa a chave pública ao nome especificado como o nome da chave. Um nome de chave pode incluir até 255 caracteres ASCII. Não pode incluir espaços no início nem no final.

1. Selecione um tipo de par de chaves apropriado para seu sistema operacional:

   (Instâncias do Linux) Em **Tipo de par de chaves**, escolha **RSA** ou **ED25519**.

   (Instâncias do Windows) Em **Tipo de par de chaves**, escolha **RSA**. As chaves **ED25519** não são compatíveis com as instâncias do Windows.

1. Para **Formato de arquivo de chave privada**, escolha o formato no qual salvar a chave privada. Para salvar a chave privada em um formato que possa ser usado com o OpenSSH, escolha **pem**. Para salvar a chave privada em um formato que possa ser usado com o PuTTY, escolha **ppk**.

1. Para adicionar uma etiqueta à chave pública, escolha **Adicionar etiqueta**, e insira a chave e o valor da etiqueta. Repita esse procedimento para cada tag. 

1. Escolha **Create key pair (Criar par de chaves)**.

1. O arquivo de chave privada é baixado automaticamente pelo navegador. O nome do arquivo base é o nome especificado como o nome do par de chaves, e a extensão do nome do arquivo é determinada pelo formato do arquivo escolhido. Salve o arquivo de chave privada em um lugar seguro.
**Importante**  
Esta é a única chance de você salvar o arquivo de chave privada.

1. Se você planeja usar um cliente SSH em um computador macOS ou Linux para se conectar à instância do Linux, use o seguinte comando para definir as permissões do seu arquivo de chave privada para que apenas você possa lê-lo.

   ```
   chmod 400 key-pair-name.pem
   ```

   Se você não definir essas permissões, não poderá conectar-se à instância usando esse par de chaves. Para obter mais informações, consulte [Erro: arquivo de chave privada desprotegido](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

------
#### [ AWS CLI ]

**Para criar um par de chaves usando o Amazon EC2**

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html) da seguinte forma para gerar um par de chaves e salvar a chave privada em um arquivo `.pem`. A opção `--query` imprime o material da chave privada na saída. A opção `--output` salva o material da chave privada no arquivo especificado. A extensão deve ser `.pem` ou `.ppk`, dependendo do formato da chave. O nome da chave privada pode ser diferente do nome da chave pública mas, para facilitar, use o mesmo nome.

   ```
   aws ec2 create-key-pair \
       --key-name my-key-pair \
       --key-type rsa \
       --key-format pem \
       --query "KeyMaterial" \
       --output text > my-key-pair.pem
   ```

1. Se você planeja usar um cliente SSH em um computador macOS ou Linux para se conectar à instância do Linux, use o seguinte comando para definir as permissões do seu arquivo de chave privada para que apenas você possa lê-lo.

   ```
   chmod 400 key-pair-name.pem
   ```

   Se você não definir essas permissões, não poderá conectar-se à instância usando esse par de chaves. Para obter mais informações, consulte [Erro: arquivo de chave privada desprotegido](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

------
#### [ PowerShell ]

**Para criar um par de chaves usando o Amazon EC2**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2KeyPair.html) como a seguir para gerar e salvar a chave em um arquivo `.pem` ou `.ppk`. O cmdlet **Out-File** salva o material da chave privada em um arquivo com a extensão especificada. A extensão deve ser `.pem` ou `.ppk`, dependendo do formato da chave. O nome da chave privada pode ser diferente do nome da chave pública mas, para facilitar, use o mesmo nome.

```
(New-EC2KeyPair `
    -KeyName "my-key-pair" `
    -KeyType "rsa" `
    -KeyFormat "pem").KeyMaterial | Out-File -Encoding ascii -FilePath C:\path\my-key-pair.pem
```

------

## Criar um par de chaves usando o AWS CloudFormation
<a name="create-key-pair-cloudformation"></a>

Quando você cria um novo par de chaves usando o CloudFormation, a chave privada é salva no AWS Systems Manager Parameter Store. O nome do parâmetro tem o seguinte formato:

```
/ec2/keypair/key_pair_id
```

Para obter mais informações, consulte o [Armazenamento de parâmetros do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html), no *Guia do usuário do AWS Systems Manager*.

**Para criar um par de chaves usando o CloudFormation**

1. Especifique o recurso [AWS::EC2::KeyPair](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html) em seu modelo.

   ```
   Resources:
     NewKeyPair:
       Type: 'AWS::EC2::KeyPair'
       Properties: 
         KeyName: new-key-pair
   ```

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html) da seguinte forma para obter o ID do par de chaves.

   ```
   aws ec2 describe-key-pairs --filters Name=key-name,Values=new-key-pair --query KeyPairs[*].KeyPairId --output text
   ```

   O seguinte é um exemplo de saída.

   ```
   key-05abb699beEXAMPLE
   ```

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) da seguinte forma para obter o parâmetro para sua chave e salvar o material da chave em um arquivo `.pem`.

   ```
   aws ssm get-parameter --name /ec2/keypair/key-05abb699beEXAMPLE --with-decryption --query Parameter.Value --output text > new-key-pair.pem
   ```

**Permissões obrigatórias do IAM**

Para habilitar o CloudFormation a gerenciar parâmetros da Parameter Store em seu nome, o perfil do IAM assumido pelo CloudFormation ou seu usuário devem ter as permissões a seguir:
+ `ssm:PutParameter`: concede permissão para criar um parâmetro para o material da chave privada.
+ `ssm:DeleteParameter`: concede permissão para excluir o parâmetro que armazenou o material da chave privada. Essa permissão é necessária independentemente de o par de chaves ter sido importado ou criado pelo CloudFormation.

Quando o CloudFormation exclui um par de chaves criado ou importado por uma pilha, ele realiza uma verificação de permissões para determinar se você tem permissão para excluir os parâmetros, embora o CloudFormation só crie um parâmetro quando cria um par de chaves, não quando importa um par de chaves. O CloudFormation testa a permissão necessária usando um nome de parâmetro fabricado que não corresponde a nenhum parâmetro em sua conta. Portanto, você pode ver um nome de parâmetro fabricado na mensagem de erro `AccessDeniedException`.

## Criar um par de chaves usando uma ferramenta de terceiros e importe a chave pública para o Amazon EC2
<a name="how-to-generate-your-own-key-and-import-it-to-aws"></a>

Em vez de usar o Amazon EC2 para criar um par de chaves, você pode criar um par de chaves RSA ou ED25519 usando uma ferramenta de terceiros e, então, importar a chave pública para o Amazon EC2.

**Requisitos para pares de chaves**
+ Tipos compatíveis:
  + (Linux e Windows) RSA
  + (Somente Linux) ED25519
**nota**  
As chaves ED25519 não são compatíveis com as instâncias do Windows.
  + O Amazon EC2 não aceita chaves DSA.
+ Formatos com suporte
  + Formato de chave pública OpenSSH (para Linux, o formato em `~/.ssh/authorized_keys`)
  + (Somente Linux) Se você se conectar usando SSH enquanto usa a API do EC2 Instance Connect, o formato do SSH2 também será compatível.
  + O formato de arquivo de chave privada SSH deve ser PEM ou PPK
  + (Apenas RSA) Formato DER codificado em Base64
  + (Apenas RSA) Formato de arquivo de chave pública SSH, conforme especificado em [RFC 4716](https://www.ietf.org/rfc/rfc4716.txt)
+ Tamanhos compatíveis:
  + 1024, 2048 e 4096.
  + (Somente Linux) Se você se conectar usando SSH enquanto usa a API do EC2 Instance Connect, os tamanhos compatíveis serão 2048 e 4096.

**Para criar um par de chaves usando uma ferramenta de terceiros**

1. Gere um par de chaves com uma ferramenta de terceiros de sua escolha. Por exemplo, é possível usar **ssh-keygen** (uma ferramenta fornecida com a instalação padrão de OpenSSH). Como alternativa, Java, Ruby, Python e muitas outras linguagens de programação fornecem bibliotecas padrão que podem ser usadas para criar um par de chaves.
**Importante**  
A chave privada deve estar no formato PEM ou PPK. Por exemplo, use `ssh-keygen -m PEM` para gerar a chave OpenSSH no formato PEM.

1. Salve a chave pública em um arquivo local. Por exemplo, `~/.ssh/my-key-pair.pub` (Linux, macOS) ou `C:\keys\my-key-pair.pub` (Windows). A extensão do nome de arquivo para esse arquivo não é importante.

1. Salve a chave privada em um arquivo local que tenha a extensão `.pem` ou `.ppk`. Por exemplo, `~/.ssh/my-key-pair.pem` ou `~/.ssh/my-key-pair.ppk` (Linux, macOS) ou `C:\keys\my-key-pair.pem` ou `C:\keys\my-key-pair.ppk` (Windows). A extensão do arquivo é importante porque, dependendo da ferramenta usada para se conectar à instância, você precisará de um formato de arquivo específico. O OpenSSH requer um arquivo `.pem`, enquanto o PuTTY requer um arquivo `.ppk`.
**Importante**  
Salve o arquivo de chave privada em um lugar seguro. Você precisará fornecer o nome da chave pública ao iniciar uma instância e a chave privada correspondente sempre que se conectar à instância.

Depois de criar o par de chaves, use um dos seguintes métodos para importar o par de chaves para Amazon EC2.

------
#### [ Console ]

**Para importar a chave pública para o Amazon EC2**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Key Pairs (Pares de chaves)**.

1. Selecione **Import key pair (Importar par de chaves)**.

1. Em **Name** (Nome), insira um nome descritivo para a chave pública. O nome pode incluir até 255 caracteres ASCII. Não pode incluir espaços no início nem no final.
**nota**  
Quando você se conecta à instância pelo console do EC2, o console sugere esse nome para o arquivo de chave privada.

1. Escolha **Browse (Procurar)** para navegar e selecionar a chave pública ou cole o conteúdo da chave pública no campo **Public key contents (Conteúdo da chave pública)**.

1. Selecione **Import key pair (Importar par de chaves)**.

1. Verifique se a chave pública que você importou aparece na lista de pares de chaves.

------
#### [ AWS CLI ]

**Para importar a chave pública para o Amazon EC2**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html).

```
aws ec2 import-key-pair \
    --key-name my-key-pair \
    --public-key-material fileb://path/my-key-pair.pub
```

**Como verificar se o par de chaves foi importado com êxito**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html).

```
aws ec2 describe-key-pairs --key-names my-key-pair
```

------
#### [ PowerShell ]

**Para importar a chave pública para o Amazon EC2**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Import-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Import-EC2KeyPair.html).

```
$publickey=[Io.File]::ReadAllText("C:\Users\TestUser\.ssh\id_rsa.pub")
Import-EC2KeyPair `
    -KeyName my-key-pair `
    -PublicKey $publickey
```

**Como verificar se o par de chaves foi importado com êxito**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
Get-EC2KeyPair -KeyName my-key-pair
```

------