GitLab或github上配置SSH Key

一、背景

当前很多公司都选择 git 作为代码版本控制工具,然后自己公司搭建私有的 gitlab 来管理代码,我们在 clone 代码的时候可以选择 http 协议,当然我们亦可以选择 ssh 协议来拉取代码。但是网上很少找到如何用 git 客户端生成 ssh key,然后配置在 gitlab,我当时在做的时候苦于摸索,后来终于找到了解决方案,那么本文,我们就来聊一聊如何本地 git 客户端生成 ssh key,然后配置在 gitlab 里,而后使用 ssh 协议进行提交和拉取 git 远程仓库的代码。

二、解决方案

  1. 打开本地 git bash, 使用如下命令生成 ssh 公钥和私钥对

    ssh-keygen -t rsa -C '[email protected]' 然后一路回车 (-C 参数是你的邮箱地址)

    GitLab或github上配置SSH Key_第1张图片

  2. 然后打开~/.ssh/id_rsa.pub 文件 (~ 表示用户目录,比如我的 windows 就是 C:\Users\Administrator),复制其中的内容

  3. 打开 gitlab, 找到 Profile Settings–>SSH Keys—>Add SSH Key, 并把上一步中复制的内容粘贴到 Key 所对应的文本框,在 Title 对应的文本框中给这个 sshkey 设置一个名字,点击 Add key 按钮

GitLab或github上配置SSH Key_第2张图片

4. 到此就完成了 gitlab 配置 ssh key 的所有步骤,我们就可以愉快的使用 ssh 协议进行代码的拉取以及提交等操作了

5. 再试一下拉取代码和提交代码,应该就不需要输入密码了

三、本地配置多个 ssh key

大多数时候,我们的机器上会有很多的 git host, 比如公司 gitlab、github、oschina 等,那我们就需要在本地配置多个 ssh key,使得不同的 host 能使用不同的 ssh key , 做法如下(以公司 gitlab 和 github 为例):

  1. 为公司生成一对秘钥 ssh key

    ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/gitlab-rsa
    
  2. 为 github 生成一对秘钥 ssh key

    ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/github-rsa
    
  3. 在~/.ssh 目录下新建名称为 config 的文件(无后缀名)。用于配置多个不同的 host 使用不同的 ssh key,内容如下:

    # gitlab
    Host gitlab.com
        HostName gitlab.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/gitlab_id-rsa
    # github
    Host github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/github_id-rsa
      ​
    # 配置文件参数
    # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
    # HostName : 要登录主机的主机名
    # User : 登录名
    # IdentityFile : 指明上面User对应的identityFile路径
    
  4. 按照上面的步骤分别往 gitlab 和 github 上添加生成的公钥 gitlab_id-rsa.pub 和 github_id-rsa.pub

  5. OK,大功告成,再次执行 git 命令验证是不是已经不需要再次验证权限了。

  6. 再次查看~/…ssh 目录下的文件, 会有 gitlab_id-rsa、gitlab_id-rsa.pub 和 github_id-rsa、github_id-rsa.pub 四个文件

三、总结

我们为什么要使用 ssh 协议呢?因为 ssh 更加安全,然后更加方便,比如我们公司的 gitlab 由 http 协议换成了 https 协议,那么如果你是使用 http 协议管理代码,那么需要修改所有的项目中的 git 地址变成 https,这会把我们给逼疯的!但是如果我们一开始就是用 ssh 协议,这不需要任何的修改,简直不能再爽一点了。

你可能感兴趣的:(#,GIT代码版本管理,github,ssh,gitlab,ssh,key,配置)