-
SSH密钥对概述
阿里云SSH密钥对是一种安全便捷的登录认证方式,由公钥和私钥组成,仅支持Linux实例。
-
SSH密钥对介绍
SSH密钥对通过加密算法生成一对密钥,默认采用RSA 2048位的加密方式。要使用SSH密钥对登录Linux实例,您必须先创建一个密钥对,并在创建实例时指定密钥对或者创建实例后绑定密钥对,然后使用私钥连接实例。
成功创建SSH密钥对后:
- 阿里云会保存SSH密钥对的公钥部分。在Linux实例中,公钥内容放在~/.ssh/authorized_keys文件内。
- 您需要下载并妥善保管私钥。私钥使用未加密的PEM(Privacy-Enhanced Mail)编码的PKCS#8格式
-
功能优势
相较于用户名和密码认证方式,SSH密钥对有以下优势:
- 安全性:SSH密钥对登录认证更为安全可靠。
密钥对安全强度远高于常规用户口令,可以杜绝暴力破解威胁。
不可能通过公钥推导出私钥。 - 便捷性:
如果您将公钥配置在Linux实例中,那么,在本地或者另外一台实例中,您可以使用私钥通过SSH命令或相关工具登录目标实例,而不需要输入密码。
便于远程登录大量Linux实例,方便管理。如果您需要批量维护多台Linux实例,推荐使用这种方式登录。
- 安全性:SSH密钥对登录认证更为安全可靠。
-
使用限制
使用SSH密钥对有如下限制:
- 如果使用SSH密钥对登录Linux实例,将会禁用密码登录,以提高安全性。
- 仅支持Linux实例。
- 目前,ECS只支持创建2048位的RSA密钥对。
- 一个云账号在一个地域最多可以拥有500个密钥对。
- 一台Linux实例只能绑定一个SSH密钥对。如果您的实例已绑定密钥对,绑定新的密钥对会替换原来的密钥对。
- 已停售的实例规格无法使用SSH密钥对。
- 基于数据安全考虑,在实例状态为运行中(Running)时绑定或者解绑密钥对,您需要重启实例使操作生效。
-
生成方式
SSH密钥对的生成方式包括:
- 由ECS生成,默认采用RSA 2048位的加密方式。具体详情查看创建SSH密钥对
- 由您采用SSH密钥对生成器生成后再导入ECS,导入的密钥对必须支持下列任一种加密方式:
- 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
-
具体操作
由上面生成方式可知,共有两种方式可以实现密钥方式登录。第一种就是官方ECS生成那种方式进行操作,这种方式具体就不展开讲了,具体可以看官方文档进行操作,也很简单。这里着重讲一下第二种生成密钥的方式如何实现免密登录。
首先解释一下第二种方式说的意思,其实就是在本地生成ssh密钥对,将生成的公钥复制到ECS服务器上,此时,本地和服务器上都有一样的公钥,然后后面就可以利用自己的私钥来验证从而登录服务器了。具体本地如何生成ssh密钥,这个也很简单就不说了,如果不清楚,可以自行百度,网上很多。
上面说的第二种方式里,其实也有两种情况:
- 本地还没有生成过密钥
- 本地已经存在了生成的密钥(如果平时使用 github,一般都会有ssh密钥配置,一般本地会有个.ssh文件夹,此目录下会有两个文件:id_rsa(私有秘钥)和id_rsa.pub(公有密钥))
如果没有生成过密钥,则首先本地生成密钥,之后操作,就与第二种情况操作一样了。
到这一步,上面不管哪种情况,我们本地已经生成了ssh密钥,然后要做的就是登陆服务器,进行配置。
这里使用之前新添加的账户登陆服务器,登陆成功后,运行
$ vim .ssh/authorized_keys
命令打开文件,如果当前目录(~目录下)没有.ssh目录或authorized_keys文件,则手动先创建一个,之后操作运行$ vim .ssh/authorized_keys
命令打开文件即可。此时,需要将本地的id_rsa.pub(公有密钥)里的内容进行复制,然后粘贴到 .ssh/authorized_keys 这个文件里,最后wq保存并退出。如果重新登录还是权限不行,则可以先对 .ssh/authorized_keys 进行一个授权,$ chmod 600 .ssh/authorized_keys
,然后重启ssh,本地登陆测试ssh USERNAME@xxx.xxx.xxx.xxx
(自己的实例IP),如果能够使用新的私钥登录ECS实例,表示已经成功。(第一次登陆可能会需要密码,后面就不会了)注意: 如果本地已经有以前github使用的密钥配置了,就不要再重新生成密钥了,否则,生成的新的密钥会替换掉原来的,会导致你后面无法使用ssh方式登陆github了。切记!!!
阿里云CentOS7环境下之利用ssh密钥实现本地免密登录
于 2020-01-01 21:35:50 首次发布