关闭

Gitlab配置ssh连接

138人阅读 评论(0) 收藏 举报

ssh公钥登录

一般在管理远程主机时,都用ssh登录,ssh user@host,但是这样每次会使用密码。 使用ssh-keygen生成的密钥对,然后将公钥添加的目标主机的~/.ssh/authorized_keys文件中,当前主机就成为可信任的主机,下次使用ssh登录时,就不用输入密码了。

Gitlab,Github都支持这种方式的连接,具体操作步骤如下:

第一步:生成密钥对

使用ssh-keygen生成密钥对:

ssh-keygen-t rsa-C"你的邮箱"

这样就在主目录下的.ssh目录中生成了两个文件id_rsa和id_rsa.pub。id_rsa中保存的是私钥,id_rsa.pub中保存的是公钥。

第二步:添加公钥

拷贝公钥到剪切板:

pbcopy

在 个人资料->SSH Keys->Add new 页面中粘贴公钥,就添加完成了。

第三步:测试

ssh加-T选项测试目标服务是否可用:

ssh-T git@"你的gitlab服务器地址"

第一次连接时,会询问是否信任主机,确认后输入yes。如果看到Welcome to GitLab, Rusher!就算配置成功了,接下来就可以通过ssh来提交代码了。

Windows

下载Git-Bash

生成密钥对ssh-keygen -t rsa -C "你的邮箱"

生成之后用notepad c:/User/Administrator/.ssh/id_rsa.pub打开文件,然后将公钥添加的Gitlab中.

测试ssh -T git@"你的gitlab服务器地址"

Gitlab服务端配置

(只使用客户端可忽略这节内容)

在客户端提交时发现以下错误:

/usr/local/lib/ruby/1.9.1/net/http.rb:762:in`initialize': getaddrinfo: Name or service not known (SocketError)

from /usr/local/lib/ruby/1.9.1/net/http.rb:762:in `open'

from /usr/local/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'

from/usr/local/lib/ruby/1.9.1/timeout.rb:54:in`timeout'

from /usr/local/lib/ruby/1.9.1/timeout.rb:99:in `timeout'

from /usr/local/lib/ruby/1.9.1/net/http.rb:762:in `connect'

from/usr/local/lib/ruby/1.9.1/net/http.rb:755:in`do_start'

from /usr/local/lib/ruby/1.9.1/net/http.rb:744:in `start'

from /home/git/gitlab-shell/lib/gitlab_net.rb:64:in `get'

from/home/git/gitlab-shell/lib/gitlab_net.rb:30:in`check'

from ./check:11:in `'

在Github的issue里找到说先运行一下/home/git/gitlab-shell/bin/check。先做检测,发现和上面一样的错误。看错误是找不到域名,所以在/etc/hosts中需要配置一个地址的映射。

127.0.0.1YOUR_DOMIN# YOUR_DOMIN是在/home/git/gitlab-shell/config.yml中配置的gitlab_url

扩展:ssh多用户切换

在配置Gitlab的时候一开始是用管理员账户做测试的,后来建了我自己的账号做开发。这样我的本地就有两个Gitlab账号,如果直接用ssh来提交代码有问题,因为ssh默认使用一开始生成id_rsa那个密钥对,但不同的账号又不能对应到同一个公钥上。如果多个账户一起用,还需要做些配置。

假如有两个账号:root和rusher。

第一步:为两个账户分别生成密钥对

提示在哪里存储密钥文件的时候,对不同的账号填不同的路径,root放在/Users/you/.ssh/id_rsa_gitlab_root下,rusher的放在/Users/you/.ssh/id_rsa_gitlab_rusher

ssh-keygen-t rsa-C rusher@you.com

Generatingpublic/privatersa key pair.

Enterfileinwhich to save the key(/Users/you/.ssh/id_rsa):/Users/you/.ssh/id_rsa_gitlab_rusher

Enterpassphrase(emptyfornopassphrase):

Entersame passphrase again:

Youridentification has been savedin/Users/you/.ssh/id_rsa_gitlab_rusher.

Yourpublickey has been savedin/Users/you/.ssh/id_rsa_gitlab_rusher.pub.

ssh-keygen-t rsa-C root@you.com

Generatingpublic/privatersa key pair.

Enterfileinwhich to save the key(/Users/you/.ssh/id_rsa):/Users/you/.ssh/id_rsa_gitlab_root

Enterpassphrase(emptyfornopassphrase):

Entersame passphrase again:

Youridentification has been savedin/Users/you/.ssh/id_rsa_gitlab_root.

Yourpublickey has been savedin/Users/you/.ssh/id_rsa_gitlab_root.pub.

还是需要将两个账号的公钥分别添加的各自账号的SSH Keys中(rusher: id_rsa_gitlab_rusher.pub和root: id_rsa_gitlab_root.pub) 。

ssh-add/Users/you/.ssh/id_rsa_gitlab_rusher

ssh-add/Users/you/.ssh/id_rsa_gitlab_root

第二步:添加ssh配置文件

在.ssh目录中添加config文件,此文件的为不同的账户添加别名(root: root_gitlab 和 rusher: rusher_gitlab),连接还是同一个服务器,但是使用不同的密钥文件,所以才能将两个账号分开。

# for root

Hostroot_gitlab

HostNamegit.you.com

Usergit

IdentityFile/Users/you/.ssh/id_rsa_gitlab

# for rusher

Hostrusher_gitlab

HostNamegit.you.com

Usergit

IdentityFile/Users/you/.ssh/id_rsa_gitlab_rusher

配置完成后,使用ssh-add命令

接下来这样使用别名测试,可以查看是否对应到了正确的账号上:

ssh-T git@root_gitlab

ssh-T git@rusher_gitlab

第三步:在git项目中使用别名

正常的项目,我们clone下来之后,origin对应的URL假设为:git@git.:Rusher/helloworld,现在需要做个改动,将git.要换成rusher_gitlab,

git remoteset-url origin git@rusher_gitlab:Rusher/helloworld

如果是root用户的项目:

git remoteset-url origin git@root_gitlab:root/helloworld

以上配置ssh的方法同样适用于Github,Bitbucket等网站。

参考文档

Github Help

为不同账号生成密钥对后,需要使用ssh-add将密钥添加进来,否则ssh不能使用正确的密钥


0
0
查看评论

Gitlab配置SSH连接

检查是否已经有SSH Key。 $cd ~/.ssh 生成一个新的SSH。 $ssh-keygen -t rsa -C "email"之后直接回车,不用填写东西。之后会让你输入密码(可以不输入密码,直接为空,这样更新代码不用每次输入 id_rsa 密码了)。然后就生成一个目录.s...
  • leo8729
  • leo8729
  • 2017-07-20 09:46
  • 684

gitlab客户端ssh配置

1 用例 客户端连接gitlab需要验证。 配置后可以直接连接,不需要输入密码 2 静态 gitlab一个代码管理工具。 3 动态 1 创建ssh秘钥 在创建秘钥之前要先检查,如果已经存在则跳过该步骤。 查询命令 cat ~/.ssh/id_rsa.pub 创建命令 ssh-keygen -t...
  • niuzhihuan
  • niuzhihuan
  • 2016-01-25 17:36
  • 907

为GitLab帐号添加SSH keys并连接GitLab

为github帐号添加SSH keys 使用git clone命令从GitLab上同步代码库时,如果使用SSH链接(如:git@gitlab.com:example/example.git),但是你的SSH key没有添加到GitLab的账号设置中,系统会报下面的错误: Permission d...
  • xyzchenxiaolin
  • xyzchenxiaolin
  • 2016-07-07 16:30
  • 17159

【基础篇】Eclipse + gitLab + ssh连接

先来点gitLab官网上的说明:怎么生成SSH keys SSH keys An SSH key allows you to establish a secure connection between your computer and GitLab. Before generating an...
  • u010933908
  • u010933908
  • 2016-07-04 15:01
  • 2791

Gitlab配置ssh连接

ssh公钥登录 一般在管理远程主机时,都用ssh登录,ssh user@host,但是这样每次会使用密码。 使用ssh-keygen生成的密钥对,然后将公钥添加的目标主机的~/.ssh/authorized_keys文件中,当前主机就成为可信任的主机,下次使用ssh登录时,就不用输入密码了。 G...
  • black_OX
  • black_OX
  • 2014-01-02 11:57
  • 54204

gitlab配置ssh key

测试服务上使用ip访问gitlab,比如http://192.168.3.20/,这里用http://IP表示。 一,在gitlab上新建项目,点击进入后会有Command line instructions: Git global setup git config --global user.n...
  • breeze_life
  • breeze_life
  • 2015-05-20 13:27
  • 61178

gitlab-eclipse-ssh连接

来到新公司开发的android移动端,使用的ide是eclipse,代码托管是GitLab,以前一直用的android studio开发,所以eclipse上有些生疏,这篇文章是怎么用gitlab-eclipse-ssh连接,在此记录下来,目的为以后回头看看。
  • fyj568213959
  • fyj568213959
  • 2016-06-12 09:44
  • 1830

GitLab配置SSH Key

公司的项目是使用GitLab进行托管的,最近重新装了系统,把本地的私钥删掉了,导致项目无法Push了,原来的SSH Key是运维的小伙伴帮忙配置的,今天小伙伴不在,只能自己动手了,把过程记录下来,分享给同学们。注意:本篇文章是基于Windows系统的1.环境配置首先安装Git和TortoiseGit...
  • kong_gu_you_lan
  • kong_gu_you_lan
  • 2016-11-26 13:06
  • 7017

Mac 下source tree 与 gitlab 添加 ssh 密钥

Mac 下 使用 source tree 与 gitlab 时sshKey 的配置与小坑
  • lele9096_bk
  • lele9096_bk
  • 2017-02-09 18:38
  • 7711

Gitlab配置ssh连接,上传项目到Gitlab

配置Git 我们先在电脑硬盘里找一块地方存放本地仓库,比如我们把本地仓库建立在D:\projects\CairhQuoteServer文件夹下 进入CairhQuoteServer文件夹 鼠标右键操作如下步骤: 1)在本地仓库里右键选择Git Init Here,会多出来一个.gi...
  • liufangaliya
  • liufangaliya
  • 2016-01-13 15:12
  • 2950
    个人资料
    • 访问:27073次
    • 积分:768
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:34篇
    • 译文:1篇
    • 评论:10条
    文章分类
    最新评论