一、Git-协议
Git可以使用四种主要的协议来传输数据:本地传输,ssh协议,Git协议和HTTP协议。
Git使用的传输协议中最常见的就是ssh了。大多数环境已经支持通过ssh对服务器的访问,ssh也是唯一一个同时支持读写操作的网络协议。另外两个网络协议(HTTP和Git)通常都是只读的。ssh同时也是一个验证授权的网络协议;而因为其普遍性,一般架设和使用都很容易。
下面主要介绍扣丁学堂HTML5培训之如何搭建ssh协议访问Git服务器。
二、在服务器上部署Git
首先,你需要一台Linux器并且拥有sudo权限,本文使用的是Debian7.0x32。下面就开始安装:
2.1第一步,安装git:
$sudoapt-getinstallgit
2.2第二步,创建一个git用户,用来运行git服务:
$sudoaddusergit
2.3第三步,设置访问权限:
有几个办法可以让团队的每个成员都有访问权:
给每个人建立一个账户。反复使用adduser并给所有人设定临时密码比较麻烦。
在服务器上建立一个Git账户,让每个需要写权限的人发送一个ssh公钥,然后将其加入Git账户的~/.ssh/authorized_keys文件。这样,所有人都将通过Git账户访问主机。
另一个办法是让ssh服务器通过某个LDAP服务,或者其他已经设定好的集中授权机制,来进行授权。
这里我们使用第二种方法,收集所有需要登录该Git服务器用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,每行一个。(注意:/home/git/.ssh/authorized_keys这个文件的owner为Git,如果不是请使用chown命令修改)。
下面是创建公钥命令:
$ssh-keygen-trsa-C'youremail@domain.com'
-t指定密钥类型,默认即rsa,可以省略
-C设置注释文字,比如你的邮箱
2.4第四步,禁用shell登录:
出于安全考虑,你可以用Git自带的git-shell工具限制git用户的活动范围。这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
把bin/sh改为/usr/bin/git-shell(或者用whichgit-shell查看它的实际安装路径)
git:x:1003:1003:,,,:/home/git:/bin/bash
改为:
git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell
现在git用户只能用ssh连接来推送和获取Git仓库,而不能直接使用服务器的shell。尝试普通ssh登录的话,会被拒绝登录。
2.5第五步,初始化Git仓库:
选定一个目录作为Git仓库,如/home/git/project.git,在/home/git/目录下输入命令:
$sudogitinit--bareproject.git
Git会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把project.git的owner改为git:
$sudochown-Rgit:gitproject.git
2.6第六步,克隆远程仓库:
ssh指定私钥的配置管理,为本地添加ssh别名,编辑~/.ssh/config,如果没有该文件,创建一个:
$vi~/.ssh/config
在config中添加:
#注释说明Host别名HostName域名或ipUser登陆服务器用的账号Port端口号(默认22,可以不填,如果服务器修改了ssh登录端口号,此处需要修改)IdentityFile密钥文件的位置
例如设置为:
#bingdian'sgitserverHostgitserverHostName162.188.23.33UsergitPort9000IdentityFile~/.ssh/server_rsa
现在,可以通过gitclone命令克隆远程仓库了:
$gitclonessh://git@gitserver:/home/git/project.git
接下来你就可以享受你的Git之旅了。最后想要工作不累就要不断的提升自己的技能,请关注扣丁学堂HTML5培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的HTML5视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的第一套自适应HTML5在线视频课程系统,让你快速掌握HTML5从入门到精通开发实战技能。扣丁学堂H5技术交流群:692172929。