Gitlab配置ssh连接

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不能使用正确的密钥

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,083评论 18 139
  • GIT分布式版本控制系统最佳实践 这篇文章来自于老男孩教育高级架构师班12期的徐亮偉同学。 首先感谢老男孩架构师班...
    meng_philip123阅读 3,255评论 4 36
  • GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界...
    YHWXQ简简单单的生活阅读 87,610评论 3 37
  • 背景 公司最近将代码由svn迁移到了gitlab来托管,我个人平时也经常使用Github,可是公司邮箱与我的Git...
    洛城夜雨阅读 1,859评论 0 5
  • ## 1、选择创建新项目 登录成功后,点击导航条上的 “+” 就可以进入创建项目的页面 ## 2、填写项目的信息 ...
    smkoc阅读 2,299评论 0 1