【Git】Git安装 + 多站点SSH Key配置

文章目录

    • 我的安装环境
    • 一、Git安装
      • 1、官网下载 git
      • 2、查看环境变量是否自动配置了
      • 3、验证安装成功
    • 二、多站点SSH Key配置
      • 1、设置全局的用户名和邮箱
      • 2、小试牛刀 - 生成单个 ssh key
      • 3、管理`Git`生成的多个`ssh key`
    • 三、如何使用?

我的安装环境

环境 版本
操作系统 win7 64位 + win10 64位
git 2.14.2.windows.3
命令行小黑窗 Git Bash Here

一、Git安装

1、官网下载 git

windows下载地址

mac下载地址

Linux/Unix下载地址

2、查看环境变量是否自动配置了

安装完毕h后,查看环境变量是否自动配置了

我自定义将Git安装在D:/Git的,所以我的环境变量是指向: D:\Git\cmd;

若没有自动配置,请手动配置 -->指向你的git的安装目录的cmd目录

3、验证安装成功

打开windowsCMD终端输入:

# 验证git是否安装成功,输出版本号就代表安装成功
git --version

二、多站点SSH Key配置

我们都知道Git在拉取、提交代码时有两种协议:
一种是HTTP/HTTPS协议,不需要任何配置,只需要输入用户名+密码即可使用
另一种是SSH协议,但需要配置ssh公钥和私钥,是一种一劳永逸的协议,配置后不再需要输入用户名和密码,安全、方便后续集成

这里着重讲SSH协议,现在我们基本都不会只单单使用一个代码托管网站,所以就涉及到需要在一台电脑上配置多个站点SSH Key以方便拉取代码

  • 注: 以下命令均是在 Git Bash Here执行的,不能使用windowsCMD终端
  • .ssh目录下点击鼠标右键进入Git Bash Here
    【Git】Git安装 + 多站点SSH Key配置_第1张图片

1、设置全局的用户名和邮箱

```
# 配置一下全局的用户名和邮箱
git config --global user.name "自定义用户名"
git config --global user.email "邮箱"

# 取消全局设置
git config --global --unset user.name
git config --global --unset user.email
```

2、小试牛刀 - 生成单个 ssh key

ssh-keygen -t rsa -C "你的邮箱" -f "自定义文件名"

生成单个SSH Key时可以连续回车,不输入密钥文件名字和密码
【Git】Git安装 + 多站点SSH Key配置_第2张图片
生成后会在C:\Users\用户名.ssh目录下产生两个文件,如图:
【Git】Git安装 + 多站点SSH Key配置_第3张图片

到这里,只需要在你的代码托管网站上添加SSH 公钥,将id_rsa.pub文件内的字符串复制粘贴进去,就可以正常使用SSH协议了!

3、管理Git生成的多个ssh key

  • 问题说明

当有多个代码托管网站的账号的时候,比如一个github,一个码云的,一个gitlab的,还有公司内部自己搭建的代码托管服务器。
当你生成多个ssh key时:

反正就是只有一个站点能用,搞得我怀疑人生
如果邮箱不同,生成第二个git的ssh key的时候会覆盖第一个,导致必然有一个用不了。

  • 解决方法

我们可以在.ssh目录下新建一个config文件并添加一些配置,进行管理我们的各个站点的帐号,就可以解决令人头疼的问题啦

  • 具体步骤
  1. 生成第一个站点的ssh key

    ssh-keygen -t rsa -C "[email protected]" -f "自定义文件名1"
    

    注意:请确保我们的Git Bash Here.ssh目录下哟!
    不然生成的文件没有在.ssh目录下,还需要我们移动到.ssh目录下

  2. 生成第二个站点的ssh key

    ssh-keygen -t rsa -C "[email protected]" -f "自定义文件名2"
    

    生成后的文件如下图所示:
    【Git】Git安装 + 多站点SSH Key配置_第4张图片

  3. 添加私钥到秘匙管理器

    • 执行ssh-agent命令

      ssh-agent是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,
      其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程

      $ ssh-agent
      SSH_AUTH_SOCK=/tmp/ssh-vtu2Stw1WRUj/agent.10928; export SSH_AUTH_SOCK;
      SSH_AGENT_PID=11716; export SSH_AGENT_PID;
      echo Agent pid 11716;
      
    • 添加私钥
      $ ssh-add ~/.ssh/gitee_id_rsa
      Could not open a connection to your authentication agent.
      

      在执行上面的添加私钥命令时,如果你也出现Could not open a connection to your authentication agent.
      解决方法如下:

      1. 输入如下命令查看已开启的ssh-agent线程
        $ ps aux | grep ssh
        11716       1   11716      11716  ?         197609 19:32:41 /usr/bin/ssh-agent
        
      2. 执行命令杀死线程:kill -9 线程号
        $ kill -9 11716
        
      3. .ssh目录执行如下命令:
        exec ssh-agent bash
        eval ssh-agent -s
        
        我的执行结果:
        【Git】Git安装 + 多站点SSH Key配置_第5张图片
      4. 好了,现在我们可以成功添加私钥到秘匙管理器ssh-agent当中了,执行ssh-add命令
        $ ssh-add ./gitee_id_rsa
        Identity added: ./gitee_id_rsa (./gitee_id_rsa)
        
        $ ssh-add ./gitlab_id_rsa
        Identity added: ./gitlab_id_rsa (./gitlab_id_rsa)
        
  4. .ssh目录下新建config文件,并添加配置信息
    config文件内容如下:

    # gitlab
    Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab_id_rsa
    User tanpeng
    
    # gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee_id_rsa
    User tanpeng
    
    # github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_id_rsa
    User tanpeng
    

    配置文件说明:

    # 这个是真实的域名地址
    HostName 
    # 这里是id_rsa的地址
    IdentityFile 
    # 配置登录时用什么权限认证--可设置publickey,password publickey,keyboard-interactive等
    PreferredAuthentications 
    # 配置使用用户名
    User 
    

    关于Host参数:
    每个账号单独配置一个Host,每个Host要取一个别名,每个Host主要配置HostNameIdentityFile两个属性即可
    Host的名字可以取为自己喜欢的名字,不过这个会影响git相关命令

    例如:
    Host mygithub 这样定义的话,git@后面紧跟的名字将会变为mygithub,如下
    git clone git@mygithub:blog/AndroidRotateAnim.git
    就相当于你配置的HostName真正的域名映射成了Host后面的配置的名字

    注意: 不要在配置文件中添加下面这样的注释,
    这种注释在读取该配置文件时会导致报错,不被识别

    HostName git.glanway.com //这里填你们公司的git网址即可
    
  5. 将公钥添加到对应的站点

  6. 测试连接

    #测试连接github
    ssh -T [email protected]    
    
    #测试连接gitlab      
    ssh -T [email protected]   
    
    #测试连接码云     
    ssh -T [email protected]   
    

    看到如下输出表示配置成功:
    【Git】Git安装 + 多站点SSH Key配置_第6张图片

到这里,我们就完成了多站点的ssh key的配置,可以随心所欲拉代码、做服务集成了!
多站点ssh就是要让我们为所欲为!

三、如何使用?

  1. 克隆代码

     # 注意!!!我们直接复制 SSH 地址,执行 git clone,是会出问题的
     git clone [email protected]:tpswpu/top-10-sorting-algorithms.git
    
     # 正确的 git clone 方式,此处我们应该使用上面 config 文件配置的 Host 值
     git clone [email protected]:tpswpu/top-10-sorting-algorithms.git
    

你可能感兴趣的:(GIT系列,git,ssh)