Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨

一、Git的配置 ——  .gitconfig

    一般下载安装Git之后的第一个步骤就使用以下命令配置Git当前的使用者名字和邮箱

$ git config --global --add “uers.name” user
$ git config --global  --add "uers.email" xxx.com

可是,这堆命令行代表着什么呢?

$ git config 代表着指令,修改参数

--global 当前设置的参数的作用域

--add "section.xx"  添加一个参数名字为“section.xx” 

注意:这里有两点有注意:1、--add 可以省略  2、名字必须满足格式xx.xx(uers.name代表着uers部分中的name)

user  对应的值

对应key-value被存储在.gticonfig隐藏文件中,形式如下

Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨_第1张图片

你也可以直接在git bash中打入git config,它就会自动列该指令的用法

Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨_第2张图片

其中Config file config代表的是你设置的参数的作用域, 此处注意的一点是,作用域越大,查找的优先级越小

--local 代表的当前工程的 对应的.gitconfig文件一般当前文件下

--global 当前登录电脑的用户 对应的.gitconfig文件在C:\Users\[用户名]

--system 当前计算机 这个的.gitconfig文件,我找了好久,最后在[Git的安装目录]\mingw64\etc下找到

以下为一些指令行使用例子:

$ git config --global --list

查看对应作用域下所有配置

$ git config --global --remove-section "user"

移除uers部分下的参数

$ git config --global --get "user.name"

查看某个配置

二、ssh的生成

    首先要了解github为什么会用到ssh协议,只是因为github提供两种登录方式,一种是通过账号密码登录,一种就是用ssh公钥登录。

    ssh是一种网络协议,用于计算机之间的加密登录,大概的过程就是(这就是我学习的原文,大佬说的很清楚,我说的简单):

1、你请求登录某个主机 (发送你的用户名给这个主机)

$ ssh git$github.com

2、该主机就会返回他的公钥给你

Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨_第3张图片

如果你是第一次请求登录该网址,他会把他网址哈希值发给你校验,一般网址都会对外公布他的公钥的哈希值(由于公钥太长了,所以转成哈希值),接下会问你,是否确实该网址,如果你确定,自动存到.shh/known_host文件中,下次登录就不再校验

3、你将你的密码用他给你的公钥加密发回去请求登录的主机,如果密码正确,就让你成功登录了

以上就是ssh协议的使用过程。

如果使用账号加密码登录,就是每次都需要输入账号和密码,太麻烦了,所以就出现公钥登录。具体的使用方法:

1、先将你的公钥(生成方法后面会详细说明)放到你要登录的主机上

2、目标主机会随机发一段字符给你

3、你用你的私钥加密,发回去给目标主机

4、目标主机用你存在他那的公钥进行解密,如果成功解开了,就验证了你的身份,让你成功登录

以github登录为例子,具体操作如下:

1、使用ssh-keygen指令行生成ssh私钥

-b “Bits” 
此选项指定密钥中的位数。管理SSH用例的规则可能需要使用特定的密钥长度。通常,2048位被认为足以用于RSA密钥。

-e “导出” 
此选项允许重新格式化OpenSSH密钥文件格式与RFC 4716 “SSH公钥文件格式”中记录的格式之间的现有密钥。

-p “更改密码”此选项允许使用[-P old_passphrase]和[-N new_passphrase],[ - f keyfile] 更改私钥文件的密码。

-t “Type”此选项指定要创建的键的类型。常用的值是:-RSA为RSA密钥(默认,可不写) -DSA为DSA密钥 -ECDSA为椭圆曲线DSA密钥

-i 输入当需要ssh-keygen访问现有密钥时,此选项指定该文件。

-f File指定用于存储创建的密钥的文件的名称。

-N New为密钥提供新密码。

-P Passphrase在读取密钥时提供(旧)密码。

-c Comment更改密钥文件的注释。

-p更改私钥文件的密码。

-q Silence ssh-keygen。

-v 详细模式。

-l Fingerprint打印指定公钥的指纹。

-B Bubble babble 显示密钥文件的泡泡嘟嘟声(Tectia格式)指纹。

-F 在known_hosts文件中搜索指定的主机名。

-R 从known_hosts文件中删除属于主机名的所有密钥。

-y 读取私有OpenSSH格式文件并将OpenSSH公钥打印到stdout。

注意:区分大小写的!!!

如何生成你的秘钥

执行ssh秘钥的命令行

$ ssh-keygen -t rsa -C "你的邮箱"

执行后会出现

询问你将要生成的秘钥要放在哪里,你可以直接使用 -f 指定。图中,红色框中的就是默认的存放地址。注意,你要提前将该位置以前的秘钥备份到其他地址,防止被覆盖。确定后会出现

需要你输入该秘钥的密码,空代表不设置密码,确认后

Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨_第4张图片

会让你再确认一次密码。(哈哈哈,密码不能太短的,至少要5位)

如果你是使用默认地址生成ssh秘钥,就会在.ssh 文件下出现这两个文件

Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨_第5张图片

2、将你的公钥添加到github上

Git · 一 gitconfig的初始化配置、ssh秘钥的生成、ssh-agent代理和与Github的接轨_第6张图片

3、测试是否正确将公钥添加到github上

$ ssh -i 你的秘钥 [email protected]

如果返回

说明了你配置成功了,此时可以成功地去clone你的工程或者创建你的新工程。其实,不指定密钥也是可以登录成功的,因为ssh默认会去.ssh文件下找你的秘钥,其实正确的做法是将你的秘钥添加ssh-agnet,让它帮你代理。

具体操作如下:

先启动连接你的ssh-agent

$ ssh-agent bash

添加你的秘钥

$ ssh-add 你的秘钥

查看当前加载的秘钥列表

$ ssh-add -l

注意:使用ssh-add指令前都需要连接你的ssh-agent!!

ssh-add 所有指令参数如下:
   -l 列出所有身份的指纹。
   -E hash指定用于指纹的哈希算法。
   -L 列出所有标识的公钥参数。
   -k 仅加载密钥而不加载证书。
   -c 要求使用身份进行签名确认
   -t life添加标识时设置生命周期(以秒为单位)。
   -d 删除标识。
   -D 删除所有身份。
   -x 锁定代理。
   -X 解锁代理。
   -s pkcs11从PKCS#11提供程序添加密钥。
   -e pkcs11删除PKCS#11提供程序提供的密钥。

本篇博客到这里就结束了,我通过几天的整理,大概详细了解git配置和ssh相关指令的使用,希望可以帮到新学git的朋友,让他们少费一些时间去整理学习网上零碎的资料。

你可能感兴趣的:(Git版本管理,Git,git,config,ssh,ssh-add,ssh-agent)