一 前言
众所周知,我们通过本机git来访问服务器git通常使用rsa凭证的方式来确保安全性,下面通过三个场景来具体分析git账户的含义:
场景一:只存在一个git账户,一个rsa密钥
例如公司内部存在gitlab服务器,那么通过本地生成rsa公钥与私钥,分别将公钥配置到服务器,私钥配置到本机git,那么可以正常通过rsa访问.
场景二:存在多个git账户,一个rsa密钥
例如本机只生成一对rsa密钥分别为id_rsa\id_rsa.pub,然而我们需要操作公司内部gitlab与自身的github,其实通过一对rsa就可以实现,将生成的公钥分别配置到gitlab与github,私钥配置到本机git,那么可以同时操作两者.
场景三:存在多个git账户,多个rsa密钥
例如我们既有公司内部的gitlab也有自身的githubA账户\githubB账户,那么通过一对rsa无法实现控制(github有验证,相同公钥不可重复使用在不同github账户),必须进行多用户配置.
二 密钥的基本概念
如何生成密钥以及如何使用密钥在文章中已经详细介绍,rsa密钥的作用是使git服务器与client之间建立安全通信通道并完成身份认证.
生成密钥时我们可以输入密码,但无需填写账户名\邮箱等特定信息,即密钥与账户无关仅做身份认证.
三 账户的基本概念
通过密钥我们可以实现本机同服务器间的身份认证,但这还远远不够,想要完整的操作git服务器必须具备如下条件:
以如下环境为例:(查看某项目git配置)
1 | #输出项目本地配置信息 |
必须具备条件解读:(在密钥已经配置要的前提下)
条件 | 说明 |
---|---|
远程主机remote.origin | 本地仓库必须要指定远程主机信息,通过clone命令即已经具备,无需再设置,当然也可也通过git remote 命令重新设置(如$ git remote set-url origin https://github.com/yqnshare/yqnshare.github.io.git) |
本地分支branch.master | 创建本地分支并提交至远程主机,详情可看git用法之常用命令 |
用户名user.name | 可以通过git config –system/global/local来分别设定,优先级为local>global>system,用户名仅仅是作为标记,无任何验证作用.详情可看git用法之常用命令 |
用户邮箱user.email | 可以通过git config –system/global/local来分别设定,优先级为local>global>system,用户邮箱仅仅是作为标记,无任何验证作用.详情可看git用法之常用命令 |
账户名 | 账户名必须填写,对应的是远程主机的账户名,如github账户名 |
密钥密码 | 如果使用rsa且设置了密码那么必须要输入 |
四 配置步骤
4.1针对不同环境生成不同rsa密钥
密钥的生成看第二部分”密钥的基本概念”
4.2配置config文件
以window系统为例,需要在.ssh中创建config文件并进行配置,内容如下:
1 | #公司的git地址 |
- Host:可以自定义,实际上是远程地址的别名,如通过 ssh -T git@yqnsharehost 等效于 ssh -T git@github.com
- User:实际上是远程服务器的账户名称,例如自己的github账户名称等,例如可以这样使用git remote set-url origin https://yqnshare@yqnsharehost/yqnshare/test.git
- IdentityFile:指的是rsa对应的路径
配置好后可通过ssh -T命令测试各个配置是否能够联通,如:
ssh -T git@@yqnsharehost
4.3配置账户信息
具体可看第三部分”账户的基本概念”,其中需要特别注意的是”用户名”和”密钥密码”,一般git会将我们第一次输入的账户名和密码进行缓存,当然我们也可以移除缓存或添加缓存,具体操作如下:
1 | #缓存项目本地的rsa对应的凭据信息 |
这里或许大家会有一个疑问,比如我在config配置了多种rsa那么到具体的项目中我们也没有去设置匹配关系,git是如何找到对应的config配置呢?
正如我前文说的,rsa密钥配置仅仅作为身份认证没有其它作用,而账户信息则负责整个本地项目与远程仓库的对应关系,两者不存在直接匹配关系,当我们本地项目需要pull或push等操作远程仓库时,git会根据项目中对应好的关系(如url地址,账户名等)自动取config中匹配,我们只需输入对应的”账户名”和”rsa密钥密码”即可访问.
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
