-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46601
- shell命令
-
- 文章:(42)篇
- 阅读:154387
- Git教程
-
- 文章:(36)篇
- 阅读:235002
- leetCode刷题
-
- 文章:(76)篇
- 阅读:132064
-
SSH 秘钥Key的简介以及生成和使用2018-02-27 21:34 阅读(9014) 评论(3)
一、SSH key简介
要了解SSH key简介,首先得熟悉SSH,关于ssh可以参考“SSH的初步使用详解”。SSH 密钥对可以让您方便的登录到 SSH 服务器,而无需输入密码。SSH 密钥对总是成双出现的,一把公钥,一把私钥。公钥可以自由的放在您所需要连接的 SSH 服务器上,而私钥必须的保管好。
1、什么是公钥登录
公钥登录,很多时候也说public key认证,公钥登录的原理:首先用户将自己的公钥存储在需要登录的远程机器上面,然后登录的时候,远程主机会向用户发送一段随机字符串,接着用户使用自己的私钥加密字符串,并发给远程主机。最后,远程主机使用存储的公钥进行解密,若解密成功,则说明用户可信,准许登录,不在提示输入密码。
备注:
1、服务端会将客户端发的公钥写入到~/.ssh/authorized_keys 文件末尾。
2、公钥和私钥在客户端(登录端)生成
2.什么是口令登录
口令登录,即登录的时候需要输入登录密码。
1.客户端向服务器发出请求
2.服务器将自己的公钥返回给客户端;
3.客户端用服务器的公钥加密登录信息, 再将信息发送给服务器;
4.服务器接收到客户端传送的登录信息, 用自己的私钥解码, 如果结果正确, 则同意登录, 建立起连接。
实现原理如下图:
备注:
1、公钥和私钥在服务端生成
二、生成公钥和私钥
ssh-keygen命令,可以生成公钥和私钥,默认生成到用户的家目录下的.ssh文件夹里面
私钥默认会被保存在 ~/.ssh/id_rsa
公钥默认会被保存在 ~/.ssh/id_rsa.pub
命令的格式如下:
ssh-keygen -f fileName -t rsa -C "dequan@example.com"
参数解析:
-f 指定要生成文件的文件名称
-t 设置认定方式,值为rsa,即非对称加密;或dsa,即数字签名和认证
-c 指定公钥中的备注信息
三、使用公钥登录的案例
现在,我将从ip为192.168.13.143 的机器,以公钥登录的方式,登录到ip为192.168.13.139的机器。
默认情况下,如果不输入密码,是无法登录的,如下:
1、存储公钥
存储公钥,即将192.168.13.143上面生成的公钥,存储在192.168.13.139上面root用户的家目录,如下:
将公钥的内容,追加到192.168.13.139上面root用户家目录下的.ssh/authorized_keys文件中,如果该文件不存在,需要手动创建。
2、重新登录
执行如下命令登录
ssh root@192.168.13.139
可以看到,这次不需要输入密码,即可完成登录了。
四、备注
1、ssh命令为什么可以使用 ~/.ssh/id_rsa 这个私钥呢?
因为在ssh的配置文件中,默认的IdentityFile执行了这个文件,如下:
当然,我们可以修改这个配置。
ssh命令在登录的时候,会拿 ~/.ssh/id_rsa这个私钥进行签名,服务端会从拿登录用户家目录下面的 ~/.ssh/id_rsa所有公钥,然后进行遍历,若签名验证通过,则放行。