

# Creación de un par de claves para la instancia de Amazon EC2
<a name="create-key-pairs"></a>

Puede utilizar Amazon EC2 para crear los pares de claves, o bien usar una herramienta de terceros para crearlos e importarlos luego en Amazon EC2.

Amazon EC2 admite claves RSA SSH-2 de 2048 bits para instancias de Linux y Windows. Amazon EC2 también admite claves ED25519 para las instancias de Linux.

Para obtener instrucciones sobre cómo conectarse a una instancia después de crear un par de claves, consulte [Conexión a la instancia de Linux con SSH](connect-to-linux-instance.md) y [Conexión a una instancia de Windows de mediante RDP](connecting_to_windows_instance.md).

**Topics**
+ [Crear un par de claves mediante Amazon EC2](#having-ec2-create-your-key-pair)
+ [Crear un par de claves con AWS CloudFormation](#create-key-pair-cloudformation)
+ [Crear un par de claves con una herramienta de terceros e importar la clave pública a Amazon EC2](#how-to-generate-your-own-key-and-import-it-to-aws)

## Crear un par de claves mediante Amazon EC2
<a name="having-ec2-create-your-key-pair"></a>

Cuando se crea un par de claves con Amazon EC2, la clave pública se almacena en Amazon EC2, y usted almacena la clave privada.

Puede crear hasta 5000 pares de claves por región. Para solicitar un aumento, cree un caso de asistencia. Para obtener más información, consulte [Creación de un caso de soporte](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case) en la *Guía del usuario de Soporte*.

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

**Para crear un par de claves mediante Amazon EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, en **Network & Security**, seleccione **Key Pairs**.

1. Elija **Create key pair (Crear par de claves)**.

1. En **Nombre**, escriba un nombre descriptivo para el par de claves. Amazon EC2 asocia la clave pública al nombre que especifique como nombre de la clave. El nombre de una clave puede incluir hasta 255 caracteres ASCII. No puede incluir espacios iniciales ni finales.

1. Seleccione un tipo de par de claves adecuado para su sistema operativo:

   (Instancias de Linux) En **Tipo de par de claves**, elija **RSA** o **ED25519**.

   (Instancias de Windows) En **Tipo de par de claves**, elija **RSA**. Las claves **ED25519** no son compatibles con instancias de Windows.

1. En **Formato de archivo de la clave privada**, elija el formato en el que desea guardar la clave privada. Para guardar la clave privada en un formato que se pueda utilizar con OpenSSH, elija **pem**. Para guardar la clave privada en un formato que se pueda utilizar con PuTTY, elija **ppk**.

1. Para agregar una etiqueta a la clave pública, elija **Agregar etiqueta** e ingrese la clave y el valor de la etiqueta. Repita este proceso para cada etiqueta. 

1. Elija **Crear par de claves**.

1. Su navegador descargará el archivo de clave privada automáticamente. El nombre del archivo base es el nombre especificado como el nombre del par de claves y la extensión del nombre de archivo la determina el formato de archivo elegido. Guarde el archivo de clave privada en un lugar seguro.
**importante**  
Esta es la única oportunidad para guardar el archivo de clave privada.

1. Si tiene previsto usar un cliente SSH en un equipo macOS o Linux para conectarse a su instancia de Linux, utilice el siguiente comando para establecer los permisos de su archivo de clave privada de manera que solo usted pueda leerlo.

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

   Si no configura estos permisos, no podrá conectarse a la instancia con este par de claves. Para obtener más información, consulte [Error: Unprotected Private Key File (Error: archivo de clave privada no protegido)](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

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

**Para crear un par de claves mediante Amazon EC2**

1. Utilice el 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) como se indica a continuación para generar el par de claves y guardar la clave privada en un archivo `.pem`. La opción `--query` imprime el material de clave privada en la salida. La opción `--output` guarda el material de la clave privada en el archivo especificado. La extensión debe ser `.pem` o `.ppk`, según el formato de la clave. El nombre de la clave privada puede ser diferente del de la clave pública, pero para facilitar su uso, se recomienda usar el mismo nombre.

   ```
   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. Si tiene planeado usar un cliente SSH en un equipo macOS o Linux para conectarse a su instancia de Linux, utilice el comando a continuación para establecer los permisos de su archivo de clave privada de manera que solo usted pueda leerlo.

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

   Si no configura estos permisos, no podrá conectarse a la instancia con este par de claves. Para obtener más información, consulte [Error: Unprotected Private Key File (Error: archivo de clave privada no protegido)](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

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

**Para crear un par de claves mediante Amazon EC2**  
Utilice el 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) de `.pem` como se indica a continuación para generar la clave y guardarla en un archivo o `.ppk` El cmdlet **Out-File** guarda el material de clave privada en un archivo con la extensión especificada. La extensión debe ser `.pem` o `.ppk`, según el formato de la clave. El nombre de la clave privada puede ser diferente del de la clave pública, pero para facilitar su uso, se recomienda usar el mismo nombre.

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

------

## Crear un par de claves con AWS CloudFormation
<a name="create-key-pair-cloudformation"></a>

Cuando crea un nuevo par de claves con CloudFormation, la clave privada se guarda en un almacén de parámetros de AWS Systems Manager. El formato del nombre del parámetro es el siguiente:

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

Para obtener más información, consulte [Almacén de parámetros de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) en la *Guía del usuario de AWS Systems Manager*.

**Para crear un par de claves con CloudFormation**

1. Especifique el recurso [AWS::EC2::KeyPair](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html) en su plantilla.

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

1. Utilice el 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) como se indica a continuación para obtener el ID del par de claves.

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

   A continuación, se muestra un ejemplo del resultado.

   ```
   key-05abb699beEXAMPLE
   ```

1. Utilice el 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) como se indica a continuación para obtener el parámetro de su clave y guardar el material de la clave en un archivo `.pem`.

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

**Permisos de IAM necesarios**

Para que CloudFormation pueda administrar los parámetros del Almacén de parámetros en su nombre, el rol de IAM asumido por CloudFormation o su usuario tiene que tener los permisos siguientes:
+ `ssm:PutParameter`: otorga permiso para crear un parámetro para el material de clave privada.
+ `ssm:DeleteParameter`: concede permiso para eliminar el parámetro que almacenaba el material de la clave privada. Este permiso es necesario independientemente de si CloudFormation creó o importó el par de claves.

Cuando CloudFormation elimina un par de claves que la pila creó o importó, hace una comprobación de los permisos para determinar si tiene permiso para eliminar parámetros, aunque CloudFormation crea un parámetro solo cuando crea un par de claves, no cuando importa un par de claves. CloudFormation comprueba el permiso necesario mediante un nombre de parámetro inventado que no coincide con ningún parámetro de su cuenta. Por lo tanto, es posible que vea un nombre de parámetro inventado en el mensaje de error `AccessDeniedException`.

## Crear un par de claves con una herramienta de terceros e importar la clave pública a Amazon EC2
<a name="how-to-generate-your-own-key-and-import-it-to-aws"></a>

En lugar de utilizar Amazon EC2 para crear un par de claves, puede crear un par de claves RSA o ED25519 con una herramienta de terceros y, a continuación, importar la clave pública en Amazon EC2.

**Requisitos para pares de claves**
+ Tipos admitidos:
  + (Linux y Windows) RSA
  + (Solo para Linux) ED25519
**nota**  
Las claves ED25519 no son compatibles con instancias de Windows.
  + Amazon EC2 no acepta claves DSA.
+ Formatos admitidos:
  + Formato de clave pública de OpenSSH (en Linux, el formato de `~/.ssh/authorized_keys`)
  + (Solo para Linux) Si se conecta mediante SSH mientras utiliza la API de EC2 Instance Connect, se admite también el formato SSH2.
  + El formato del archivo de clave privada de SSH debe ser PEM o PPK
  + (Solo RSA) Formato DER codificado en Base64
  + (Solo RSA) Formato de archivo de claves públicas de SSH tal y como se especifica en [RFC 4716](https://www.ietf.org/rfc/rfc4716.txt)
+ Longitudes admitidas:
  + 1024, 2048 y 4096.
  + (Solo para Linux) Si se conecta mediante SSH mientras utiliza la API de EC2 Instance Connect, se admiten las longitudes 2048 y 4096.

**Para crear su par de claves con una herramienta de terceros**

1. Genere un par de claves con la herramienta de terceros de su elección. Por ejemplo, puede usar **ssh-keygen** (una herramienta proporcionada con la instalación de OpenSSH estándar). Además, Java, Ruby, Python y otros muchos lenguajes de programación ofrecen bibliotecas estándar que puede utilizar para crear un par de claves.
**importante**  
La clave privada debe estar en formato PEM o PPK. Por ejemplo, use `ssh-keygen -m PEM` para generar la clave OpenSSH en el formato PEM.

1. Guarde la clave pública en un archivo local. Por ejemplo, `~/.ssh/my-key-pair.pub` (Linux, macOS) o `C:\keys\my-key-pair.pub` (Windows). La extensión de este archivo no es importante.

1. Guarde la clave privada en un archivo local con la extensión `.pem` o `.ppk`. Por ejemplo, `~/.ssh/my-key-pair.pem` o `~/.ssh/my-key-pair.ppk` (Linux, macOS) o `C:\keys\my-key-pair.pem` o `C:\keys\my-key-pair.ppk` (Windows). La extensión del archivo es importante porque, según la herramienta que utilice para conectarse a la instancia, necesitará un formato de archivo específico. OpenSSH requiere un archivo `.pem`, mientras que PuTTY requiere un archivo `.ppk`.
**importante**  
Guarde el archivo de clave privada en un lugar seguro. Deberá proporcionar el nombre de su clave pública al iniciar una instancia y la clave privada correspondiente cada vez que se conecte a dicha instancia.

Una vez creado el par de claves, use uno de los métodos siguientes para importar la clave pública a Amazon EC2.

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

**Para importar la clave pública a Amazon EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Key Pairs (Pares de claves)**.

1. Elija **Importar par de claves**.

1. En **Nombre**, escriba un nombre descriptivo para la clave pública. El nombre puede incluir hasta 255 caracteres ASCII. No puede incluir espacios iniciales ni finales.
**nota**  
Cuando se conecta a la instancia desde la consola de EC2, dicha consola sugiere este nombre para el nombre del archivo de clave privada.

1. Elija **Examinar** para desplazarse hasta la clave pública y seleccionarla, o pegue el contenido de la clave pública en el campo **Contenido de la clave pública**.

1. Elija **Import key pair (Importar par de claves)**.

1. Compruebe que la clave pública importada aparezca en la lista de pares de claves.

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

**Para importar la clave pública a Amazon EC2**  
Utilice el 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
```

**Para comprobar que el par de claves se importó correctamente**  
Utilice el 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 la clave pública a Amazon EC2**  
Utilice el 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
```

**Para comprobar que el par de claves se importó correctamente**  
Utilice el 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
```

------