Bootstrap

使用ssh密钥提交、拉取代码的介绍

网络世界中的数据并不安全

  1. 网络中无时无刻有大量的数据传输,传输过程中需要经过各种网络设备和物理媒介
  2. 你的数据可能会在传输的某一个环节被一个“中间人”拦截,造成泄密,甚至会篡改你的数据,让你发出错误的信息

SSH 为 Secure Shell 的缩写,SSH 协议即为安全外壳协议,使用 SSH 就是为了保证远程操作服务器的安全性

  1. 使用SSH能够对传输数据进行加密,防止“中间人”篡改数据
  2. 使用SSH能够对传输数据进行压缩,可以加快传输速度

SSH 有口令、密钥两种验证方式

  1. 口令方式的安全性较弱,你不能保证远程的服务器就是你想要操作的服务器,同时弱口令也存在被破解的风险
  2. 密钥方式的安全性较高,可以在最大程度上保证数据的安全性

密钥算法

  1. 密钥算法分为对称加密和非对称加密两种方式,对称加密方式的加密与解密使用同一个密钥,非对称加密则使用公钥和私钥
  2. RSA 密钥算法是目前最广泛使用的非对称密钥生成算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积的结果进行因式分解却极其困难,因此可以将两个素数作为私钥,相乘的结果作为公钥

公钥与私钥

  1. 公钥加密后的数据只能用私钥解开,私钥加密后的数据只能用公钥解开
  2. 你的公钥可以公开给任何需要的服务器,因此叫公钥,你通过私钥加密后发出去的数据,服务器通过你的公钥都能正确解开
  3. 只要你的私钥不泄露,你从服务器接收到的数据就是安全的,即使数据泄露,别人也无法查看数据内容,因为该数据只能通过你的私钥解密
  4. 在一些场合,会在发送的数据时,将原文和通过私钥加密后的原文(使用数字签名)一起发送给对方,保证数据不会被“中间人”篡改,因为要篡改你的数据必须伪造数字签名,这需要同时拿到你的公钥(用于解密数据)和私钥(用于伪造签名)才有可能实现
  5. 为了进一步提高公钥的安全性,后来出现了证书中心(certificate authority,CA)对公钥进行认证,防止你交给服务器的公钥被“中间人”替换,然后“中间人”冒充你与服务器进行通信,而通过证书中心认证后,就可以确保你发送给服务器的公钥一定是你自己的

SSH 密钥操作服务器流程

  1. 你通过一种密钥算法创建一对密钥(公钥、私钥),并提前把公钥交给远程服务器(服务器能看到你的公钥)
  2. 服务器通过同样的密钥算法创建一对密钥(公钥、私钥),并提前把公钥交给你(你能看到服务器的公钥)
  3. 你向远程服务器发送公钥,服务器在自身目录下找到与你发送的公钥保持一致的公钥(你主动发起操作请求)
  4. 服务器通过你的公钥加密数据,向你发送身份质询数据(服务器确认你的身份,该数据只有你能正确解出原文,别人即使收到也无法解密)
  5. 你收到质询信息后,通过自己的私钥解密,身份验证成功(你确认服务器的身份)
  6. 你通过服务器的公钥加密数据,并发送数据到远程服务器(你发送数据,该数据只有服务器能正确解出原文,别人即使收到也无法解密)
  7. 服务器收到数据后,通过服务器的私钥解密数据(服务器接收数据)
  8. 服务器通过你的公钥加密数据,并发送给你(服务器发送数据,该数据只有你能正确解出原文,别人即使收到也无法解密)
  9. 你通过自己的私钥解密从服务器接收到的数据(你接收数据)

      总结:公钥大家都知道,私钥只有自己有,使用对方的公钥加密,使用自己的私钥解密

;