最近在使用云服务器的时候使用到了ssh去做登陆验证。关于ssh的使用原理,公钥和密钥如果对服务器的登陆做验证的。以及对称加密和非对称加密的基本原理,这里做一个比较详细的归纳和总结。
第一部分是关于ssh的使用以及原理的,这里引用了博主:疲惫的豆豆http://www.cnblogs.com/dzblog/p/6930147.html。这一篇讲得比较通俗易懂。也易于上手操作。
一、明白的以下几个概念:
know_host : 存储 已经确保正常、可以安全连接的所有服务器(hosts)的公钥。
authorized_hosts : 存储 已经认证的客户端的公钥。
public key :公钥
private key :私钥
使用ssh和https有什么不同:
HTTPS:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处(发现了https免密登录的方式)。
SSH:使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者或管理员,否则你是无法添加SSH key的。另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置
生成SSH Key的基本命令:
#步骤1:
cd ~/.ssh ls
#这两个命令就是检查是否已经存在id_rsa.pub或id_dsa.pub文件,如果文件已经存在,那么你可以跳过步骤2
#步骤2:创建一个SSH Key
ssh-keygen -t rsa -C "你的email地址"
#代码参数含义:
#-t指定密钥类型,默认是rsa,可以省略。
#-C设置注释文字,比如邮箱。
#-f指定密钥文件存储文件名。
二、关于ssh
SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
三、基本用法
ssh user@host
四、对称加密和非对称加密的区别
首先想到的实现方案肯定是对数据进行加密。加密的方式主要有两种:
- 对称加密(也称为秘钥加密)
- 非对称加密(也称公钥加密)
所谓对称加密,指加密解密使用同一套秘钥。如下图所示:
1、用于加密数据的组件和用于解密数据的组件,两者之间的关联性决定了该种加密方式是对称型的还是非对称型的。
对称加密采用同一个密钥加密和解密数据。也就是说,任意两个持有同样密钥的人就可以在相互之间传递加密信息并解密。
该种加密方式常被称为“共同的秘密(shared secret)”式加密或者“秘密的钥匙(secret key)”式加密。通常情况下,所有的操作都使用同一个密钥,或者一对关联度非常高、使得接收方能够很容易的推断出发送方使用的密钥的密钥对。