SSH公钥、私钥的基本概念

SSH为一项创建在应用层和传输层基础上的安全协议,当然需要指出的是,SSH只是一种协议,存在着很多实现,著名的有OpenSSH以及PuTTY。
在客户端来看,SSH提供了两种级别的安全验证:
第一种级别(基于密码的安全验证),即账号+密码,但是可能有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击(man-in-the-middle);
第二种级别(基于密钥的安全验证),这里的密钥即包括公钥、私钥。这些都属于密码学的概念,容易混淆。接下来阐述下加密、认证、公钥、私钥的概念和关系。
首先明确加密、认证两个概念:
加密是将数据资料加密,使得非法用户即使截获到加密过的资料,也无法获取正确的内容,它的重点在于数据的安全性。身份认证是用来判断某个身份的真实性,其重点在于用户的真实性。两者的侧重点是不同的。
其次了解公钥和私钥的概念:
现代密码体制中加密盒解密采用不同的密钥(公钥和私钥),也就是非对称密钥密码系统,是从前对称加密方式的提高与增强。每个通信方均需两个密钥:公钥和私钥。公钥用来加密/验章用的,私钥用来解密/签章。
1,公钥和私钥成对出现
2,公开的密钥叫公钥,只有自己知道的叫私钥
3,用公钥加密的数据只有对应的私钥可以解密
4,用私钥加密的数据只有对应的公钥可以解密
5,如果可以用公钥解密,则必然是对应的私钥加的密
6,如果可以用私钥解密,则必然是对应的公钥加的密
接下来用电子邮件的方式说明一下原理。收发邮件需实现如下目的:
1. A发送给B的内容必须加密,在邮件的传输过程中不能被别人看到。(加密)
2. 必须保证是A发送的邮件,不是别人冒充我的。(认证)
K1:要达到发送一个加密邮件的目标,必须发送邮件的双方都有公钥和私钥,且A必须拥有B的公钥,B也必须拥有A的公钥。当A->B资料时,A会使用B的公钥加密,这样才能确保只有B能解密查看真实内容,即加密机制。
K2:验证方面则是使用签/验章的机制,A传资料给B(当然不只是B,所有有A公钥的人都可以)时,会以A的私钥做签章,因为私钥只有A手里有,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由 A 发出来的了,即认证机制。
在服务器端,SSH也提供安全验证,主机将自己的公钥分发给相关的客户端,客户端在访问主机时则使用该主机的公钥加密数据,主机则使用自己的私钥来解密数据,从而保证
数据的保密性。
 
rsa加密验证方式,充分利用了非对称加密体系的优势,不需要在网络传输密码,完全杜绝了中间人攻击的可能。
步骤如下:
 
准备工作
 
-1.客户端先使用 ssh-keygen 命令,生成私钥和公钥。按照默认配置,私钥会被保存在~/.ssh/id_rsa中,公钥则在~/.ssh/id_rsa.pub中。(一般别修改这里的文件)
 
0.客户端通过安全的方式将公钥发送给服务器。在服务器端,将客户端发的公钥写入到~/.ssh/authorized_keys文件末尾。
 
建立连接
 
1.客户端发出申请。服务器产生session密钥对,返回通过对应客户端的公钥加密后的session公钥。
 
2.客户端用自己的密钥解密信息,得到session公钥。
 
3.之后的数据交互,都通过对方方公钥加密,对方收到信息后,用其私钥解密,实现安全加密过程。
 
免密码的RSA加密方式实施过程
 1.安装ssh
mac下自带的有,Ubuntu下直接sudo apt-get install ssh。
 2.在客户端生成私钥公钥
使用ssh-keygen命令生成密钥对。遇到提示都直接回车(其中passphrase是保护rsa密钥的另一套加密方式)。
$ ssh-keygen  
Generating public/private rsa key pair.  
Enter file in which to save the key (/Users/biaobiaoqi/.ssh/id_rsa): /Users/biaobiaoqi/.ssh/id_rsa  
Enter passphrase (empty for no passphrase):  
Enter same passphrase again:  
Your identification has been saved in /Users/biaobiaoqi/.ssh/id_rsa.  
Your public key has been saved in /Users/biaobiaoqi/.ssh/id_rsa.pub.  
The key fingerprint is:  
b7:c2:5c:3f:83:5e:5e:93:a4:42:db:51:d8:ac:07:66 biaobiaoqi@biaobiaoqi.local  
The key's randomart image is:  
+--[ RSA 2048]----+  
|                |  
|            +  |  
|            E +  |  
|          o +  |  
|        S + o o  |  
|      o + * = . |  
|        + = B +  |  
|        o + + . |  
|          . .    |  
+-----------------+ 
结果是在~/.ssh/下生成了id_rsa(私钥)和id_rsa.pub(公钥)
 3.将客户端的公钥id_rsa.pub传递给服务器传送id_rsa.pub到服务器上,并将其内容写入到~/.ssh/authorized_keys文件尾。这样一来,所有人都将通过 git 账户访问主机。这丝毫不会影响提交的数据 — 访问主机用的身份不会影响提交对象的提交者信息。 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值