git ssh传输的原理与实践

来源:互联网 发布:mac dps文件怎么打开 编辑:程序博客网 时间:2024/05/16 09:32

win7系统配置git,首先安装git客户端,下载地址:

https://git-for-windows.github.io/

下载后安装即可

Git安装好后应该与远程仓库建立关联,这里选用github

需要一提的是,git在提交到远程的时候有以下几种方式

1.       Ssh (非自己的项目没有这个)

Sshsecure shell的缩写,是一种安全的网络协议,git使用这种协议进行远程加密登录。

Ssh的登录命令格式为:

$ Sshuser@host

其中,user为用户名,host为远程主机,比如

$ ssh git@github.com (这条命令一般用来测试git能否连接远程host)

Ssh登录安全性由非对称加密保证,所谓非对称加密,就是产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在git中一般命名为id_rsa.pub, id_rsa, id_rsa是密钥名,可以自己制定,默认的id_rsa说明了生成密钥时选择的加密算法,也可以指定为dsaras是一代算法,给予大整数的分解,Dsa二代算法,于整数有限域离散对数难题)使用-t参数选择

那么如何使用生成的一个私钥一个公钥进行验证呢

首先,我们要在本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地,当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,返回一个随机生成的字符串,本地拿到该字符串,用存放在本地的私钥进行加密,再次发送到远程,远程用之前存放在远程的公钥对本地发送过来加密过的字符串进行解密,如果解密后与源字符串等同,则认证成功。

根据这个原理,下面一步步利用git提供的方法进行配置:

1.       在本地生成密钥对

使用命令


-t参数选择使用的算法,可以为rsadsa

-c参数选择自己使用的邮箱地址

生成过程会提示输入文件名,即生成密钥的文件名,还提示是否输入密码,这个密码是用来保护存放在本地的私钥不被其他人使用,只有该密码的持有者才可以使用该私钥,文件名使用id_rsa,密码直接回车,表示不设置保护密码。

执行后,会在默认文件夹C:\Users\Administrator\.ssh\下生成两个文件,其中id_rsa为私钥,id_rsa.pub为公钥。

2 将公钥放到远程主机。

可以使用命令

$ ssh-copy-id user@host命令来直接将公钥发送过去,也可以直接复制过去,以github为例,记事本打开公钥文件,复制到剪贴板,打开github,找到设置界面


选择newSshKey,粘贴上去。远端公钥配置完毕。

3 .在远程发送随机字符串到本地时,本地程序需要知道到哪里去找存放在本地的私钥,执行


Ywy_key是我之前生成的私钥,应该改成自己的私钥文件名。

至此,配置就算完成了。

4 . 测试一下,


 

 

1 0