zoukankan      html  css  js  c++  java
  • Git使用SSH协议clone项目及SSH简介

    Clone

    Clone可以使用HTTPS或SSH协议

    如果使用SSH克隆项目,需要做以下配置。

    1. 打开Git bash

    2. 执行命令:ssh-keygen -t rsa ,之后有Y/N的选择,一直按回车即可

    3. 在执行的路径下生成两个文件id_rsa(私钥), id_rsa.pub(公钥)

     

    4. 打开id_rsa.pub文件,复制里面的全部内容,然后到GitHub或Gitlab网页,点击自己的用户头像,点击setting,找到SSH的一项,new一个SSH key,再把复制的内容粘贴即可。

     

    5. 之后就可以使用SSH的方式克隆项目了。

    SSH扩展

    ssh(安全外壳协议)为 Secure Shell 的缩写,它是专为远程登录会话(例如Windows远程登录Linux服务器)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。

    SSH的安全机制

    SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。

    传统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

    但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

    第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。

    第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

    在Git使用SSH克隆项目就属于第二种级别。

    RSA算法属于非对称加密算法。

    RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

    算法原理:RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

    自己的理解

    在网上搜索了许多有关非对称加密算法的文章,也略懂了一些原理,这里记下自己的理解。

    非对称加密算法是通过一组数学算式实现的,由于脱离数学太久,一些数学符号、术语早已忘记,大概就是通过质数的相乘和什么因式分解实现的。

    换成自己的理解就是:

    例如有一道数学题137 X 753=?我们很容易就可以算出来。

    137 X 753=103161

    但是要算103161是由哪2个整数(非自身与1相乘)相乘得来的就困难了许多。

    随着2个乘数越大,结果越大,因式分解也就越难求(不知道是不是叫因式分解,你懂我意思吗,我向你敬礼,色鹿)

    所以,RSA算法的保密强度随其密钥的长度增加而增强。但是,密钥越长,其加解密所耗用的时间也越长。因此,要根据所保护信息的敏感程度与攻击者破解所要花费的代价值不值得以及系统所要求的反应时间来综合考虑,尤其对于商业信息领域更是如此。

    还可以这么理解,公钥就像是锁头,私钥就像是钥匙,挂在门口上的锁头是公开的,钥匙是自己才有的。想一想现实中配钥匙,都是带着钥匙去配的,而不是带着锁头去配,根据公钥来推导私钥,难度很大。

  • 相关阅读:
    决策树
    flask数据库的迁移
    flask的查询,一对多,多对多
    django的验证码
    第一讲:python环境配置(python2.7+python3.7)
    pytest
    【TS】-类型兼容性
    HTML--src和href的区别
    JS--为什么null是对象?
    JS--null和undefined的区别
  • 原文地址:https://www.cnblogs.com/fangjb/p/14265618.html
Copyright © 2011-2022 走看看