当前不少公司都选择git做为代码版本控制工具,而后自 己公司搭建私有的gitlab来管理代码,咱们在clone代码的时候能够选择http协议,固然咱们亦能够选择ssh协议来拉取代码。可是网上不多找到 如何用git客户端生成ssh key,而后配置在gitlab,我当时在作的时候苦于摸索,后来终于找到了解决方案,那么本文,咱们就来聊一聊如何本地git客户端生成ssh key,而后配置在gitlab里,然后使用ssh协议进行提交和拉取git远程仓库的代码。html
打开本地git bash,使用以下命令生成ssh公钥和私钥对git
ssh-keygen -t rsa -C 'xxx@xxx.com'
而后一路回车(-C 参数是你的邮箱地址)github
而后打开~/.ssh/id_rsa.pub文件(~表示用户目录,好比个人windows就是C:\Users\Administrator),复制其中的内容windows
打开gitlab,找到Profile Settings-->SSH Keys--->Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮安全
4. 到此就完成了gitlab配置ssh key的全部步骤,咱们就能够愉快的使用ssh协议进行代码的拉取以及提交等操做了bash
5. 再试一下拉取代码和提交代码,应该就不须要输入密码了ssh
大多数时候,咱们的机器上会有不少的git host,好比公司gitlab、github、oschina等,那咱们就须要在本地配置多个ssh key,使得不一样的host能使用不一样的ssh key ,作法以下(以公司gitlab和github为例):ide
为公司生成一对秘钥ssh key工具
ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa
为github生成一对秘钥ssh keygitlab
ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/.ssh/github-rsa
在~/.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路径
OK,大功告成,再次执行git命令验证是否是已经不须要再次验证权限了。
再次查看~/..ssh目录下的文件,会有gitlab_id-rsa、gitlab_id-rsa.pub和github_id-rsa、github_id-rsa.pub四个文件
咱们为何要使用ssh协议呢?由于ssh更加安全,然 后更加方便,好比咱们公司的gitlab由http协议换成了https协议,那么若是你是使用http协议管理代码,那么须要修改全部的项目中的git 地址变成https,这会把咱们给逼疯的!可是若是咱们一开始就是用ssh协议,这不须要任何的修改,简直不能再爽一点了。