阅读 1425

如何生成SSH Key-使用GitLab

1.检查是否已经存在SSH Key

打开电脑终端,输入以下命令:ls -al ~/.ssh

2.会出现两种情况:

(1)终端出现文件id_rsa.pub 或 id_dsa.pub,则表示该电脑已经存在SSH Key,此时可继续输入命令:

//将公钥放到剪切板(mac)

pbcopy < ~/.ssh/id_rsa.pub   

// windows

cat ~/.ssh/id_rsa.pub

这样你需要的SSH Key 就已经复制到粘贴板上了,然后进行步骤3

(2)终端未出现id_rsa.pub 或 id_dsa.pub文件,表示该电脑还没有配置SSH Key,此时需要输入命令:

ssh-keygen -t rsa -C "your_full_name@xxxxx.com"

(注意,这里的 your_full_name@xxxxx.com 是你自己的公司邮箱) 默认会在相应路径下(/your_home_path)生成id_rsa和id_rsa.pub两个文件,此时终端会显示:

Generating public/private rsa key pair.

Enter file in which to save the key (/your_home_path/.ssh/id_rsa):

连续回车即可,也可能会让你输入密码,密码就是你的开机密码

此时再输入命令:ls -al ~/.ssh 就会出现id_rsa.pub 和 id_dsa.pub两个文件,然后重复情况(1)的步骤即输入以下命令再进行步骤3即可:

pbcopy < ~/.ssh/id_rsa.pub

3.将SSH Key添加到GitLab中

打开GitLab, 登录,找到左边栏有一个的按钮,点击“ADD SSH KEY”按钮添加,将已经获得的SSH Key粘贴到“Key”,下边的标题可以随便取,点击加入项目,这样就保持了本地与服务器端的联系.



二.本地配置多个 SSH Key

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

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

    ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa复制代码
  2. 为github生成一对秘钥ssh key

    ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/.ssh/github-rsa复制代码
  3. 按照上面的步骤分别往gitlab和github上添加生成的公钥gitlab_id-rsa.pub和github_id-rsa.pub
  4. 将ssh-key添加到ssh-agent

上面这一步我们已经创建好了 ssh-key,此时还需要将新的 ssh-key 添加到ssh agent ,因为默认只读 id_rsa,首先查看一下已经添加进去的 ssh-key,当出现下面 这种情况是说明 ssh agent 里面并没有把我们新生产的 ssh-key添加进去

ssh-add -l
The agent has no identities.复制代码

可以选择把我们生成的 ssh-key 添加进去,也可以指定添加

//全部添加
ssh-add  

//指定添加(可以切换到.ssh下添加,也可以直接指定路径添加)
➜  .ssh ssh-add id_rsa_test_github                   
Enter passphrase for id_rsa_test_github: 
Identity added: id_rsa_test_github (id_rsa_test_github)复制代码

这时输入下面指令就能看见我们添加进去的 ssh-key

ssh-add -l
复制代码

获取公钥内容的另一种方法:

.ssh  cat id_rsa_test_github.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoG4Tmo8wF3P9/Vdtsm220jE6dNu9iG8jtranZccTO4hsyck4cxO02AniYr7JaPsL91sLCODEhnEmI+YWLSXFIaPbXVyVEa3PHc+VdNjgkkm/unkoBKsMLViP0vOUtU2OSYAdlWAoXpAyzPV17W0ratFVkHTjr1+G4NHOCo/qKbozPaHH9gaed7RB1Kx8swPkt0HGv/o9NQh7psmNPaanqMlTqA0uVS47LbCF5+C0CAgj2bFGEHtKy8cw6M+7OHBaTq90d740IBNca1fIvIDTnjsSV26iOiluQ+jVfsHuHmaAuw7ez2z/84sb+r5RtP5kjMemlw2D+/FmbFqx8qXDt youremail@email.com复制代码