云服务器内容精选

  • 前提条件 准备一台Linux操作系统的临时云服务器,建议操作系统为Ubuntu14.04以上版本,且该临时云服务器与待重置密码的云服务器位于同一个可用区。 临时云服务器已经绑定弹性公网IP,并配置系统apt-get源。 通过下面的方法,在临时云服务器中安装ntfs-3g和chntpw软件包。 方法一: 执行以下命令,安装ntfs-3g和chntpw软件包。 sudo apt-get install ntfs-3g chntpw 方法二: 根据临时云服务器的操作系统版本,下载对应版本的ntfs-3g和chntpw软件包进行安装。
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 参数类型 是否必选 描述 reset-password Object 是 reset-password信息详情,参考表3。 表3 reset-password字段结构说明 参数 参数类型 是否必选 描述 new_password String 是 弹性云服务器新密码。 该接口不做密码安全性校验,设置的密码复杂度请遵循密码规则。 密码规则: 密码长度范围为8到26位。 密码至少包含以下4种字符中的3种: 大写字母 小写字母 数字 特殊字符,包括!@$%^-_=+[{}]:,./? 密码不能包含用户名或用户名的逆序。 Windows系统的弹性云服务器,不能包含用户名中超过两个连续字符的部分。
  • 响应示例 导入SSH密钥: { "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWNgTxQYeBzK9LYy4IakX7IsIl5j5zqR6BU2GJaEg3RK6dlS7rKFQhvy/V/1emK+GT/7P8up9VsMZ9Dx6PBOLow5p+2/wGsMlwDJpWiQ8zNnE********************************************************************************************************************************************************************************************************************************************* Generated-by-Nova\\n\n", "user_id": "6fc0d2cbbfab40b199874b97097e913d", "name": "demo1", "fingerprint": "fc:47:b5:c3:7d:25:32:**:**:**:**:**:**:**:**:**" } } 创建SSH密钥: { "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWNgTxQYeBzK9LYy4IakX7IsIl5j5zqR6BU2GJaEg3RK6dlS7rKFQhvy/V/1emK+GT/7P8up9VsMZ9Dx6PBOLow5p+2/wGsMlwDJpWiQ8zNnE********************************************************************************************************************************************************************************************************************************************* Generated-by-Nova\n", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1jYE8UGHgcyvS2MuCGpF+yLCJeY+c6kegVNhiWhIN0SunZUu\n6yhUIb8v1f9Xpivhk/+z/LqfVbDGfQ8ejwTi6MOaftv8BrDJcAyaVokPMzZxDIPr\nvwK/2YWBwDMihADjicSHJz6FIMXzXY/3ol1ffAGm7AXVAO0A99DoPBeAZp9pYov1\ng/Sm0EFY2+5Gwd4DSCaRk1HKF+92q6K6pKv6aWi0ZpsDCe20yBpfP9DFlNg8vnkw\ncjmgzG9obWwfo/GV8hLuzqKMtDWknfjzR79z2fTiFTu4HdZcqE0bwjCvxd+Ovs5m\nbZORAEkjseUYn50sJNzbboFY17PRjCXxSwUYmwIDAQABAoIBADNKQ+ywUA3YQLDA\nUqlZKOB09h+0/YccG13D5TrNaV0yaMz6h31u7pYV/RI0TXxQTXbuZt5AoR4Xca9I\nC30bImmxTDDL45CGi/T0T5AgyS7t/iuM+smFkwI2YVbv53fL7q9yCxpucdnjC95/\nNj/+M3qxupIQ42uRVAYCU1jwF6J6YLy/9UamrmVd4bWFRtT19O7uszUhHLqJOZXq\n3ItqnMyD5bSMkzMN+RxmZVXAPkBOonGVeBBInCjvHv23REkngX38zcUSc543H3Di\n4673helqSdMnI0/TgyfLQcNuOsfQcD02A**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************\n-----END RSA PRIVATE KEY-----\n", "user_id": "6fc0d2cbbfab40b199874b97097e913d", "type": "ssh", "name": "demo", "fingerprint": "fc:47:b5:c3:7d:25:32:**:**:**:**:**:**:**:**:**" } }
  • 请求示例 导入SSH密钥。 POST https://{endpoint}/v2.1/{project_id}/os-keypairs { "keypair": { "public_key": "ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDWNgTxQYeBzK9LYy4IakX7IsIl5j5zqR6BU2GJaEg3RK6dlS7rKFQhvy/V/1emK+GT/7P8up9VsMZ9Dx6PBOLow5p+2/wGsMlwDJpW*************************************************************************************************************************************************************************************************************************** Generated-by-Nova\\n\n", "type": "ssh", "name": "demo1", "user_id": "fake" } } 创建SSH密钥。 POST https://{endpoint}/v2.1/{project_id}/os-keypairs { "keypair": { "name": "demo" } }
  • 响应消息 响应参数如表4所示。 表4 响应参数 参数 参数类型 描述 keypair Object SSH密钥信息,详情请参见表5。 表5 keypair字段数据结构说明 参数 参数类型 描述 fingerprint String 密钥对应指纹信息。 name String 密钥名称。 public_key String 密钥对应publicKey信息。 private_key String 密钥对应privateKey信息。 创建SSH密钥时,响应中包括private_key的信息。 导入SSH密钥时,响应中不包括private_key的信息。 user_id String 密钥所属用户ID。 type String 密钥类型,值为“ssh”或“x509”。 微版本2.2及以上版本支持。
  • 请求消息 请求参数如表2所示。 创建SSH密钥时,只需要提交SSH密钥的name属性。导入SSH密钥时,才需要提交public_key属性。 表2 请求参数 参数 是否必选 参数类型 描述 keypair 是 Object 创建或导入的SSH密钥信息,详情请参见表3。 表3 keypair字段数据结构说明 参数 是否必选 参数类型 描述 public_key 否 String 导入的公钥信息。 建议导入的公钥长度不大于1024字节。 说明: 长度超过1024字节会导致云服务器注入该密钥失败。 type 否 String 密钥类型,值为“ssh”或“x509”。 微版本2.2及以上版本支持。 name 是 String 密钥名称。 新创建的密钥名称不能和已有密钥名称相同。 user_id 否 String 密钥的用户ID。 微版本2.10及以上版本支持。
  • 请求示例 请求中的密码仅为示例,请勿复制使用该示例密码。 PUT https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-reset-password { "reset-password": { "new_password": $ADMIN_PASS, //建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 } }
  • URI GET /v1/{project_id}/baremetalservers/{server_id}/os-server-password 参数说明请参见表1。 表1 参数说明 参数 是否必选 描述 project_id 是 项目ID。 获取方式请参见获取项目ID。 server_id 是 裸金属服务器ID。 可以从裸金属服务器控制台查询,或者通过调用查询裸金属服务器列表(OpenStack原生)获取。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 status String 登录流程状态标识。 枚举值: SUCCESS:登录成功 ACCESS_DENIED:拒绝访问 session_token String 用户session_token,可使用该token调用单点登录接口获取sso_ticket,通过sso_ticket可以获取用户信息。 id_token String 本质上是一个JWT Token,包含了用户身份信息,默认2小时有效,支持可配置。 expire Integer session_token有效期,单位为秒,有效期内可以使用session_token获取ticket。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误详情。
  • 请求示例 密码过期强制修改密码。 POST https://{domain_name}/api/v2/sdk/pwd/update X-operating-sys-version: Android 10 X-device-fingerprint: 156aysdna213sac X-device-ip: 10.10.10.1 X-agent: Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36 X-L: zh X-client-id: DRrYIqauawN0I8myTMoDTPys6ezGZxnm X-state-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... X-tenant-id: 08f770f51f80d2f40f38c00cb199fd21 { "old_password": "P******d", "new_password": "P******3" }
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 X-operating-sys-version 是 String 调用方操作系统版本,例如:Android 10。 X-device-fingerprint 是 String 调用方设备指纹,例如:156aysdna213sc50。 X-device-ip 否 String 调用方IP,例如:10.10.10.1。 X-agent 是 String 用户Agent信息,例如:Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36。 X-L 否 String 用于国际化语言设置,例如:zh。 X-client-id 是 String 应用标识,注册应用后分配的ClientId。 X-state-token 是 String 临时令牌,调用密码登录相关接口,密码快过期或已过期时返回的state_token。 X-tenant-id 否 String 租户id,ISV应用调用则为必填,需要将{domain_name}换成ISV通用域名{common_domain},请求Header参数中需要指定对应租户的tenant_id,并将X-client-id换成ISV应用模板的client_id。 表2 请求Body参数 参数 是否必选 参数类型 描述 old_password 是 String 用户的原密码。 new_password 是 String 设置的新密码。
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 X-operating-sys-version 是 String 调用方操作系统版本,例如:Android 10。 X-device-fingerprint 是 String 调用方设备指纹,例如:156aysdna213sc50。 X-device-ip 否 String 调用方IP,例如:10.10.10.1。 X-agent 是 String 用户Agent信息,例如:Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36。 X-L 否 String 用于国际化语言设置,例如:zh。 X-client-id 是 String 应用标识,注册应用后分配的ClientId。 X-tenant-id 否 String 租户id,ISV应用调用则为必填,需要将{domain_name}换成ISV通用域名{common_domain},请求Header参数中需要指定对应租户的tenant_id,并将X-client-id换成ISV应用模板的client_id。 表2 请求Body参数 参数 是否必选 参数类型 描述 email 是 String 接收验证码的邮箱。 verify_code 是 String 短信验证码。 password 是 String 设置的新密码。
  • 请求示例 通过邮箱找回密码。 POST https://{domain_name}/api/v2/sdk/pwd/update-by-mobile X-operating-sys-version: Android 10 X-device-fingerprint: 156aysdna213sac X-device-ip: 10.10.10.1 X-agent: Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36 X-L: zh X-client-id: DRrYIqauawN0I8myTMoDTPys6ezGZxnm X-tenant-id: 08f770f51f80d2f40f38c00cb199fd21 { "email": "123@example.com", "verify_code": "123456", "password": "P@ssW0rd" }
  • 操作步骤 下载重置密码的脚本,并上传至临时云服务器。 单击下载重置密码脚本,在本地通过WinSCP等连接工具,将获取的changepasswd.sh脚本上传到临时云服务器。 WinSCP下载地址:https://winscp.net/。 关闭原云服务器,卸载其系统盘,并将系统盘挂载到临时云服务器。 原云服务器关机,进入详情页,并选择“云硬盘”页签。 原云服务器关机时,请勿执行强制关机操作,否则可能引起重置密码操作失败。 单击系统盘所在行的“卸载”,卸载该系统盘。 展开临时云服务器的详情页,并选择“云硬盘”页签。 单击“挂载磁盘”,在“挂载磁盘”对话框中,选择2.b中卸载的系统盘,将其挂载到临时云服务器上。 远程登录临时云服务器,并重置密码。 在临时云服务器的“操作”列下,单击“远程登录”。 执行以下命令,查看原云服务器上卸载的系统盘在临时云服务器上的目录。 fdisk -l 在脚本所在目录执行以下命令,运行重置密码脚本。 chmod +x changepasswd.sh ./changepasswd.sh 运行重置密码脚本时,如果系统提示没有lv相关的命令(如no lvs commmand),则需要在临时云服务器安装lvm(Logical Volume Manager)工具,推荐使用lvm2,您可以执行命令yum install lvm2进行安装。 如果原云服务器和临时云服务器的操作系统均为centos7,运行脚本过程中可能会出现挂载失败。请将脚本中的内容“mount $dev $mountPath”修改为“mount -o nouuid $dev $mountPath”,避免脚本运行失败。 根据系统提示输入新设置的密码和3.b中获取到的目录信息。 系统显示如下回显信息时,说明密码设置成功。 set password success. 如果是非root用户,请执行如下操作打开root登录权限。 vi /etc/ssh/sshd_config 修改如下配置项: 把PasswordAuthentication no 改为 PasswordAuthentication yes 或去掉PasswordAuthentication yes 前面的#注释掉。 把PermitRootLogin no 改为 PermitRootLogin yes 或去掉PermitRootLogin yes 前面的#注释掉。 修改AllowUsers的值为AllowUsers root 在文件中查找AllowUsers,如果没有请在文件末尾补充AllowUsers root。 关闭临时云服务器,卸载原云服务器的系统盘,并将其重新挂载回原云服务器后执行重启操作。 临时云服务器关机,并进入详情页,选择“云硬盘”页签。 单击“卸载”,卸载2中临时挂载的数据盘。 展开原Linux云服务器的详情页,选择“云硬盘”页签。 单击“挂载磁盘”,在“挂载磁盘”对话框中,选择5.b中卸载的数据盘,并设置挂载点为“/dev/sda”。 重启原云服务器。
  • URI DELETE /v1/{project_id}/baremetalservers/{server_id}/os-server-password 参数说明请参见表1。 表1 参数说明 参数 是否必选 描述 project_id 是 项目ID。 获取方式请参见获取项目ID。 server_id 是 裸金属服务器ID。 可以从裸金属服务器控制台查询,或者通过调用查询裸金属服务器列表(OpenStack原生)获取。