# 创建和导入SSH密钥对 - CreateKeypair
#### 功能介绍
创建和导入SSH密钥对
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-dew/dew_02_0002.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-dew/dew_02_0308.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                   | 访问级别  | 资源类型（\*为必须）   | 条件键                                                                                                                                                                                                                                                                                                                                           | 别名                        | 依赖的授权项                                                                                                                                                                        |
  |:---|:---|:---|:---|:---|:---|
  | kps:SSHKeyPair:create | Write | SSHKeyPair \* | - kps:KmsKeyId   - kps:Algorithm    | kps:domainKeypairs:create | - kms:cmk:createDataKey  - kms:cmk:list   |
     
  
 
#### URI
POST /v3/{project_id}/keypairs
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目ID。可参考[获取项目ID](https://support.huaweicloud.com/api-dew/dew_02_0009.html)获取。 **约束限制：** 不涉及 **取值范围：** 以IAM服务接口返回值为准，字符长度32-32 **默认取值：** 不涉及 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token。通过调用IAM服务查询用户Token接口获取（响应消息头中X-Subject-Token的值） **约束限制：** 不涉及 **取值范围：** IAM服务查询用户Token接口为准 **默认取值：** 不涉及 |
   
表3请求Body参数 
| 参数      | 是否必选 | 参数类型                                                                      | 描述                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| keypair | 是    | [CreateKeypairAction] object | **参数解释：** 创建密钥对请求体请求参数 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
 表4CreateKeypairAction 
| 参数             | 是否必选 | 参数类型                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| name           | 是    | String                                                        | **参数解释：** SSH密钥对的名称 **约束限制：** - 新创建的密钥对名称不能和已有密钥对的名称相同   - SSH密钥对名称由英文字母、数字、下划线、中划线组成，长度不能超过255个字节    **取值范围：** 不涉及 **默认取值：** 不涉及 |
| type           | 否    | String                                                        | **参数解释：** 密钥对类型 **约束限制：** 不涉及 **取值范围：** - ssh   - x509    **默认取值：** ssh                                                           |
| public_key     | 否    | String                                                        | **参数解释：** 密钥对公钥 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                     |
| scope          | 否    | String                                                        | **参数解释：** 密钥对所属域，租户级或用户级 **约束限制：** 不涉及 **取值范围：** - domain   - user    **默认取值：** user                                              |
| user_id        | 否    | String                                                        | **参数解释：** SSH密钥对所属的用户ID **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                             |
| key_protection | 否    | [KeyProtection] object | **参数解释：** SSH密钥对私钥托管与保护信息 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                           |
   
 表5KeyProtection 
| 参数          | 是否必选 | 参数类型                                                    | 描述                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| private_key | 否    | String                                                  | **参数解释：** 导入SSH密钥对的私钥 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及  |
| encryption  | 是    | [Encryption] object | **参数解释：** 对私钥进行加密存储的方式 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
 表6Encryption 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| type         | 是    | String | **参数解释：** 加密类型 **约束限制：** 若局点没有kms服务，请填"default" **取值范围：** - "default"为默认加密方式，适用于没有kms服务的局点   - "kms"为采用kms服务加密方式    **默认取值：** default |
| kms_key_name | 否    | String | **参数解释：** kms密钥的名称 **约束限制：** - 若"type"为"kms"，则必须填入"kms_key_name"或"kms_key_id"    **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                |
| kms_key_id   | 否    | String | **参数解释：** kms密钥的ID **约束限制：** - 若"type"为"kms"，则必须填入"kms_key_name"或"kms_key_id"    **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                |
   
#### 响应参数
**状态码：200**
表7响应Body参数 
| 参数      | 参数类型                                                                   | 描述                                                                                                                                       |
|:---|:---|:---|
| keypair | [CreateKeypairResp] object | **参数解释：** 创建SSH密钥对响应消息体 **取值范围：** 不涉及 |
   
 表8CreateKeypairResp 
| 参数          | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| name        | String | **参数解释：** SSH密钥对的名称 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                             |
| type        | String | **参数解释：** 密钥对类型 **取值范围：** - ssh   - x509                                                          |
| public_key  | String | **参数解释：** 密钥对公钥 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                 |
| private_key | String | **参数解释：** 密钥对私钥信息 **取值范围：** - 创建SSH密钥对时，响应中包括private_key的信息   - 导入SSH密钥对时，响应中不包括private_key的信息    |
| fingerprint | String | **参数解释：** SSH密钥对应指纹信息 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                           |
| user_id     | String | **参数解释：** SSH密钥对所属的用户ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 请求示例
```
{
  "keypair" : {
    "name" : "demo2"
  }
}
```
#### 响应示例
**状态码：200**
请求已成功
```
{
  "keypair" : {
    "name" : "demo",
    "type" : "ssh",
    "public_key" : "ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...",
    "private_key" : "-----BEGIN RSA PRIVATE KEY-----...",
    "fingerprint" : "49:ef:73:2b:9b:7f:2e:0c:58:d3:e3:42:8e:28:04:3b",
    "user_id" : "e4f380899b1248918f3d37098dc63746"
  }
}
```
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求已成功 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-dew/ErrorCode.html)。
