全部产品
Search
文档中心

云服务器 ECS:管理SSH密钥对

更新时间:Nov 15, 2024

在通过SSH远程连接Linux实例时,您可以通过密钥对认证身份,在不输入密码的情况下进行身份验证,实现免密登录。

SSH密钥对概述

什么是SSH密钥对

SSH密钥对是通过SSH连接实例的一种凭证。一对SSH密钥对由公钥和私钥两部分组成,公钥可以公开,存储在实例内,私钥需保密并由您自行保管。密钥对必须成对使用,公钥负责加密数据,私钥负责解密数据,由公钥加密的数据仅能通过私钥解密。

使用SSH密钥对认证的优势

  • 安全可靠

    SSH密钥对安全强度远高于常规用户密码,且从公钥逆向推出私钥的难度极高,可以杜绝暴力破解威胁。

  • 便捷

    • 通过使用SSH密钥对,可以实现免密登录,直接使用私钥通过SSH命令或相关工具登录目标实例。

    • 支持登录多台Linux实例,更加方便地管理您的实例。如果您需要批量维护多台Linux实例,推荐使用这种方式登录。

SSH密钥对如何工作

简化后的SSH密钥对认证流程如图所示。在客户端发起登录请求后,服务端会通过公钥加密一个随机字符串,客户端通过私钥解密该字符串返回给服务端,通过对比两个字符串是否一致来认证身份。

image

管理密钥对

进入密钥对管理页(查看所有密钥对)

  • 通过控制台

    如图所示,密钥对的管理操作集中在密钥对的管理页面,您可以通过以下步骤进入密钥对的管理页。在该页面,你可以看到当前地域下所有的密钥对的信息并对密钥对进行管理操作。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择网络与安全 > 密钥对

    3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

    image

  • 相关API

    您可以调用DescribeKeyPairs接口查询指定地域下所有的密钥对,相关API说明,请参见DescribeKeyPairs - 查询一个或多个密钥对

创建密钥对

  • 在控制台创建密钥对

    重要
    • 创建密钥对后,系统将自动下载私钥,请您妥善保管。阿里云仅会保存您的公钥,不会保存您的私钥。使用密钥对绑定ECS实例后,如果没有私钥,您将无法登录该ECS实例。

    • 您在一个地域最多可以拥有500个密钥对。

    您可以在阿里云控制台,自动创建密钥对,具体操作步骤如下。

    1. 在密钥对管理页,单击创建密钥对

    2. 创建密钥对对话框中,完成配置,配置项说明如下。

      • 密钥对名称:长度为2~128个字符,不能以特殊字符及数字开头,只可包含特殊字符中的点号(.)、下划线(_)、连字符(-)和半角冒号(:)。

      • 创建类型:选择自动新建密钥对,选择该选项后,系统会为您自动创建密钥对。创建完成后将自动下载私钥,您只有这一次下载私钥的机会,因此请妥善保存私钥文件。

      • 资源组:您可以为密钥对指定一个资源组,实现对资源的分组管理,详情请参见资源组

      • 标签:您可以为密钥对绑定一个或多个标签,便于搜索和资源聚合,详情请参见标签

    3. 完成配置后,单击确定

      密钥对创建成功后,浏览器自动下载私钥文件(密钥对名称.pem)到本地电脑。

    image

  • 相关API

    您可以调用CreateKeyPair接口创建密钥对,相关API说明,请参见CreateKeyPair - 创建一对SSH密钥对

查看公钥信息

如果您需要查看创建公钥的信息,您可以参考以下方式,通过私钥获取公钥。

本地为Linux或Mac系统

运行ssh-keygen命令,并指定.pem文件的路径。

/path_to_key_pair/my-key-pair.pem为您私钥文件的路径
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem

返回公钥信息,类似如下所示:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA****+GF9q7rhc6vYrExwT4WU4fsaRcVXGV2Mg9RHex21hl1au77GkmnIgukBZjywlQOT4GDdsJy2nBOdJPrCEBIPxxxxxxxxxx/fctNuKjcmMMOA8YUT+sJKn3l7rCLkesE+S5880yNdRjBiiUy40kyr7Y+fqGVdSOHGMXZQPpkBtojcxxxxxxxxxxx/htEqGa/Jq4fH7bR6CYQ2XgH/hCap29Mdi/G5Tx1nbUKuIHdMWOPvjxxxxxxxxxx+lHtTGiAIRG1riyNRVC47ZEVCxxxxxx
说明

如果该命令失败,请运行chmod 400 my-key-pair.pem命令更改权限,确保只有您能查看该文件。

本地为Windows操作系统

完成以下操作,查看公钥信息:

  1. 启动PuTTYgen。

  2. 单击Load

  3. 选择.ppk.pem文件。

    PuTTYgen会显示公钥信息。

在已绑定密钥对的实例查看

  1. 远程连接Linux实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 执行以下命令,查看SSH密钥对的公钥信息。

    sudo cat ~/.ssh/authorized_keys
    说明

    公钥内容放在~/.ssh/authorized_keys文件内。在实例内打开该文件,会返回公钥信息。

导入密钥对(公钥)

  • 待导入密钥对支持的加密方式

    导入阿里云的公钥必须使用Base64编码,且必须支持下列加密方式中的一种:

    • rsa

    • dsa

    • ssh-rsa

    • ssh-dss

    • ecdsa

    • ssh-rsa-cert-v00@openssh.com

    • ssh-dss-cert-v00@openssh.com

    • ssh-rsa-cert-v01@openssh.com

    • ssh-dss-cert-v01@openssh.com

    • ecdsa-sha2-nistp256-cert-v01@openssh.com

    • ecdsa-sha2-nistp384-cert-v01@openssh.com

    • ecdsa-sha2-nistp521-cert-v01@openssh.com

  • 在控制台导入密钥对

    您可以在阿里云控制台,自动创建密钥对,具体操作步骤如下。

    1. 在密钥对管理页,单击创建密钥对

    2. 如图所示,在创建密钥对对话框中,完成配置,配置项说明如下。

      • 密钥对名称:长度为2~128个字符,不能以特殊字符及数字开头,只可包含特殊字符中的点号(.)、下划线(_)、连字符(-)和半角冒号(:)。

      • 创建类型:选择导入已有密钥对,选择该选项后,您需要提供您的公钥文件。

      • 公钥内容:输入需要导入的公钥文件的内容。

      • 资源组:您可以为密钥对指定一个资源组,实现对资源的分组管理,详情请参见资源组

      • 标签:您可以为密钥对绑定一个或多个标签,便于搜索和资源聚合,详情请参见标签

    3. 完成配置后,单击确定完成导入密钥对的操作。

    image

  • 相关API

    您可以调用ImportKeyPair接口,导入已有密钥对(公钥),相关API说明,请参见ImportKeyPair - 导入RSA密钥对公钥

绑定密钥对

您可以在创建实例时指定SSH密钥对,也可以在创建实例后绑定SSH密钥对,以满足您安全地进行远程服务器访问、多用户访问管理以及自动化和批量操作等需求。

  • 注意事项

    • 只能为初始用户绑定:在为ECS实例绑定密钥对时,仅支持绑定实例的初始登录用户的密钥对,实例初始登录用户是您在创建实例时选择的登录用户,如需为其他用户绑定密钥对,请参见手动绑定密钥对实现SSH免密登录

    • 绑定后需重启实例:通过该方式绑定密钥对后,需要重启ECS实例才能生效,如果重启实例会对您现有实例造成影响,可以手动绑定密钥对,具体操作,请参见手动绑定密钥对实现SSH免密登录

    • 在控制台操作时,一台ECS实例只能绑定一个SSH密钥对,但是同一个密钥对可用于多台ECS实例。如果ECS实例已经绑定了SSH密钥对,绑定新密钥对后,新密钥会自动替换原有的密钥。

    • 会切换登录方式,如果ECS实例原先使用密码认证,绑定密钥对后,会关闭SSH的密码登录功能。

  • 在控制台绑定密钥对

    在阿里云控制台为实例绑定密钥对的方式如下。

    1. 在密钥对管理页,找到需要操作的密钥对,在操作列中,单击绑定密钥对

    2. 选择ECS实例栏中,选中需要绑定该密钥对的ECS实例名称,单击>图标,将其移入已选择栏中。单击下一步

      说明

      SSH密钥对仅支持Linux实例,如果是Windows实例,此处无法选中。

    3. 根据界面提示,选择重启实例的方式,或者等待合适的时机重启实例,重启实例后,新的密钥对可以生效。

    image

  • 相关API

    您可以调用AttachKeyPair接口,为Linux实例绑定密钥对,相关API说明,请参见AttachKeyPair - 绑定SSH密钥对到Linux实例

解绑密钥对

如果您不再需要已绑定的密钥对,例如使用了多个过期或不再需要的SSH密钥对、定期进行密钥轮换或某个用户不再需要访问特定实例,您可以解绑SSH密钥对,以提高实例的安全性或限制访问权限。

重要

通过该方式解绑密钥对后,需要重启ECS实例,如果不能接受重启实例,请手动解绑密钥对,具体操作,请参见手动绑定密钥对实现SSH免密登录

  • 控制台操作

    在阿里云控制台为实例绑定密钥对的方式如下。

    1. 在密钥对管理页,找到需要操作的密钥对,在操作列中,单击解绑密钥对

    2. 选择ECS实例栏中,选中需要解绑该密钥对的ECS实例名称,单击>图标,将其移入已选择栏中。单击下一步

    3. 根据界面提示,选择重启实例的方式,或者等待合适的时机重启实例,重启实例后密钥对与实例解除绑定。

    image

  • 相关API

    您可以调用DetachKeyPair接口,为Linux实例解绑密钥对,相关API说明,请参见DetachKeyPair - 为Linux实例解绑 SSH 密钥对

删除密钥对

重要

当待删除的密钥对存在已绑定的实例时,不支持删除操作。

  • 控制台

    在阿里云控制台删除密钥对的步骤如下。

    1. 在密钥对管理页,找到需要操作的密钥对,在操作列中,单击删除

    2. 根据界面提示完成删除操作。

    image

  • 相关API

    您可以调用DeleteKeyPairs接口,删除密钥对,相关API说明,请参见DeleteKeyPairs - 删除一对或者多对SSH密钥对