Updated on 2024-08-06 GMT+08:00

Unbind an SSH Key Pair

Function

Unbinds an SSH key pair from a specified VM and restores SSH password login.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/keypairs/disassociate

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token. Can be obtained by calling the IAM API for obtaining the user token (the value of X-Subject-Token in the response header).

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

server

Yes

DisassociateEcsServerInfo object

Information about the VM that the key pair is to be bound to

Table 4 DisassociateEcsServerInfo

Parameter

Mandatory

Type

Description

id

Yes

String

ID of the VM that the SSH key pair is to be bound to (in order to replace or reset the original key pair).

auth

No

Auth object

(Optional) Authentication type. This parameter is required for key pair replacement but not required for key pair reset.

Table 5 Auth

Parameter

Mandatory

Type

Description

type

No

String

The value can be password or keypair.

key

No

String

  • If type is set to password, key indicates the password.

  • If type is set to keypair, key indicates the private key.

Response Parameters

Status code: 202

Table 6 Response body parameters

Parameter

Type

Description

task_id

String

ID returned when a task is delivered

server_id

String

Specifies the ID of the bound VM.

status

String

Indicates the delivery status of a task. SUCCESS or FAILED.

error_code

String

Error code returned when a task fails to be delivered.

error_msg

String

Error information returned when a task fails to be delivered.

Status code: 400

Table 7 Response body parameters

Parameter

Type

Description

error_code

String

Error Codes

error_msg

String

Description

Example Requests

  • {
      "server" : {
        "id" : "d76baba7-ef09-40a2-87ff-3eafec0696e7",
        "auth" : {
          "type" : "keypair",
          "key" : "-----BEGINRSAPRIVATEKEY-----\nM..."
        }
      }
    }
  • {
      "server" : {
        "id" : "x76baba7-ef09-40a2-87ff-3eafec0696e7"
      }
    }

Example Responses

Status code: 202

OK

{
  "task_id" : "aee8d2fe-5484-4753-9177-5a38dc15546c"
}

Status code: 400

Error response

{
  "error_code" : "KPS.XXX",
  "error_msg" : "XXX"
}

SDK Sample Code

The SDK sample code is as follows.

  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.kps.v3.region.KpsRegion;
    import com.huaweicloud.sdk.kps.v3.*;
    import com.huaweicloud.sdk.kps.v3.model.*;
    
    
    public class DisassociateKeypairSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
    
            ICredential auth = new BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            KpsClient client = KpsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(KpsRegion.valueOf("<YOUR REGION>"))
                    .build();
            DisassociateKeypairRequest request = new DisassociateKeypairRequest();
            DisassociateKeypairRequestBody body = new DisassociateKeypairRequestBody();
            Auth authServer = new Auth();
            authServer.withType(Auth.TypeEnum.fromValue("keypair"))
                .withKey("-----BEGINRSAPRIVATEKEY-----
    M...");
            DisassociateEcsServerInfo serverbody = new DisassociateEcsServerInfo();
            serverbody.withId("d76baba7-ef09-40a2-87ff-3eafec0696e7")
                .withAuth(authServer);
            body.withServer(serverbody);
            request.withBody(body);
            try {
                DisassociateKeypairResponse response = client.disassociateKeypair(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.kps.v3.region.KpsRegion;
    import com.huaweicloud.sdk.kps.v3.*;
    import com.huaweicloud.sdk.kps.v3.model.*;
    
    
    public class DisassociateKeypairSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
    
            ICredential auth = new BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            KpsClient client = KpsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(KpsRegion.valueOf("<YOUR REGION>"))
                    .build();
            DisassociateKeypairRequest request = new DisassociateKeypairRequest();
            DisassociateKeypairRequestBody body = new DisassociateKeypairRequestBody();
            DisassociateEcsServerInfo serverbody = new DisassociateEcsServerInfo();
            serverbody.withId("x76baba7-ef09-40a2-87ff-3eafec0696e7");
            body.withServer(serverbody);
            request.withBody(body);
            try {
                DisassociateKeypairResponse response = client.disassociateKeypair(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkkps.v3.region.kps_region import KpsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkkps.v3 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
    
        credentials = BasicCredentials(ak, sk)
    
        client = KpsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(KpsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = DisassociateKeypairRequest()
            authServer = Auth(
                type="keypair",
                key="-----BEGINRSAPRIVATEKEY-----
            M..."
            )
            serverbody = DisassociateEcsServerInfo(
                id="d76baba7-ef09-40a2-87ff-3eafec0696e7",
                auth=authServer
            )
            request.body = DisassociateKeypairRequestBody(
                server=serverbody
            )
            response = client.disassociate_keypair(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkkps.v3.region.kps_region import KpsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkkps.v3 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
    
        credentials = BasicCredentials(ak, sk)
    
        client = KpsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(KpsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = DisassociateKeypairRequest()
            serverbody = DisassociateEcsServerInfo(
                id="x76baba7-ef09-40a2-87ff-3eafec0696e7"
            )
            request.body = DisassociateKeypairRequestBody(
                server=serverbody
            )
            response = client.disassociate_keypair(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        kps "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kps/v3"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kps/v3/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kps/v3/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := kps.NewKpsClient(
            kps.KpsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.DisassociateKeypairRequest{}
    	typeAuth:= model.GetAuthTypeEnum().KEYPAIR
    	keyAuth:= "-----BEGINRSAPRIVATEKEY-----
    M..."
    	authServer := &model.Auth{
    		Type: &typeAuth,
    		Key: &keyAuth,
    	}
    	serverbody := &model.DisassociateEcsServerInfo{
    		Id: "d76baba7-ef09-40a2-87ff-3eafec0696e7",
    		Auth: authServer,
    	}
    	request.Body = &model.DisassociateKeypairRequestBody{
    		Server: serverbody,
    	}
    	response, err := client.DisassociateKeypair(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        kps "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kps/v3"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kps/v3/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kps/v3/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := kps.NewKpsClient(
            kps.KpsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.DisassociateKeypairRequest{}
    	serverbody := &model.DisassociateEcsServerInfo{
    		Id: "x76baba7-ef09-40a2-87ff-3eafec0696e7",
    	}
    	request.Body = &model.DisassociateKeypairRequestBody{
    		Server: serverbody,
    	}
    	response, err := client.DisassociateKeypair(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

202

OK

400

Error response

Error Codes

See Error Codes.