一、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 bash中打入git config,它就会自动列该指令的用法
其中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、该主机就会返回他的公钥给你
如果你是第一次请求登录该网址,他会把他网址哈希值发给你校验,一般网址都会对外公布他的公钥的哈希值(由于公钥太长了,所以转成哈希值),接下会问你,是否确实该网址,如果你确定,自动存到.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 指定。图中,红色框中的就是默认的存放地址。注意,你要提前将该位置以前的秘钥备份到其他地址,防止被覆盖。确定后会出现
需要你输入该秘钥的密码,空代表不设置密码,确认后
会让你再确认一次密码。(哈哈哈,密码不能太短的,至少要5位)
如果你是使用默认地址生成ssh秘钥,就会在.ssh 文件下出现这两个文件
2、将你的公钥添加到github上
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的朋友,让他们少费一些时间去整理学习网上零碎的资料。