MyException - 我的异常网
当前位置:我的异常网» 操作系统 » 局域网筹建小组级git服务器《转载》

局域网筹建小组级git服务器《转载》

www.MyException.Cn  网友分享于:2015-08-26  浏览:35次
局域网搭建小组级git服务器《转载》

参考文章:http://blog.prosight.me/index.php/2009/11/485

              http://www.hjide.com/tag/git

              http://www.idndx.com/posts/set-up-git-server-on-centos.html

     http://blog.toolib.net/cnmahj/2011/08/centos-4-7-%E4%B8%AD%E5%AE%89%E8%A3%85-git/

如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境。

1. 生成 SSH 公钥

1. 生成 SSH 公钥

每个需要使用git服务器的工程师,自己需要生成一个ssh公钥
进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa。 .pub 文件是公钥,另一个文件是密钥。假如没有这些文件(或者干脆连 .ssh 目录都没有),你可以用 ssh-keygen 的程序来建立它们,该程序在 Linux/Mac 系统由 SSH 包提供, 在 Windows 上则包含在 MSysGit 包里:

1
2
3
4
5
6
7
8
9
$ ssh-keygen
 
Generating public/
private rsa key pair.
Enter file
 in
 which
 to save the key (
/
Users/
schacon/
.ssh/
id_rsa)
: 
Enter passphrase (
empty for
 no passphrase)
: 
Enter same passphrase again: 
Your identification has been saved in
 /
Users/
schacon/
.ssh/
id_rsa.
Your public key has been saved in
 /
Users/
schacon/
.ssh/
id_rsa.pub.
The key fingerprint is:
43
:c5:5b:5f:b1:f1:50
:43
:ad:20
:a6:92
:6a:1f:9a:3a schacon@
agadorlaptop.local

它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。

现在,所有做过这一步的用户都得把它们的公钥给你或者 Git 服务器的管理者(假设 SSH 服务被设定为使用公钥机制)。他们只需要复制 .pub 文件的内容然后 e-email 之。公钥的样子大致如下:

1
2
3
4
5
6
7
$ cat
 ~/
.ssh/
id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/
BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/
MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/
7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/
eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/
Pb0rwert/
En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/
il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q
== schacon@
agadorlaptop.local

2. 架设服务器

首先,创建一个 ‘git’ 用户并为其创建一个 .ssh 目录,在用户主目录下:

1
2
3
4
$ sudo
 adduser git

$ su
 git

$ cd

$ mkdir
 .ssh

接下来,把开发者的 SSH 公钥添加到这个用户的 authorized_keys 文件中。假设你通过 e-mail 收到了几个公钥并存到了临时文件里。只要把它们加入 authorized_keys 文件

1
2
3
$ cat
 /
tmp/
id_rsa.john.pub >>
 ~/
.ssh/
authorized_keys
$ cat
 /
tmp/
id_rsa.josie.pub >>
 ~/
.ssh/
authorized_keys
$ cat
 /
tmp/
id_rsa.jessica.pub >>
 ~/
.ssh/
authorized_keys
这样子给git用户提供了公钥之后,通过ssh方式远程连接git用户不需要在输入密码了。
 

现在可以使用 –bare 选项运行 git init 来设定一个空仓库,这会初始化一个不包含工作目录的仓库。

1
2
3
4
$ cd
 /
opt/
git

$ mkdir
 project.git
$ cd
 project.git
$ git
 --bare
 init

这时,开发人员就可以把它加为远程仓库,推送一个分支,从而把第一个版本的工程上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过 shell 登入主机并创建一个纯仓库。我们不妨以 gitserver 作为 git 用户和仓库所在的主机名。如果你在网络内部运行该主机,并且在 DNS 中设定 gitserver 指向该主机,那么以下这些命令都是可用的:

1
2
3
4
5
6
7
# 在一个工程师的电脑上

$ cd
 myproject
$ git
 init
$ git
 add .
$ git
 commit -m
 'initial commit'

$ git
 remote add origin git
@
gitserver:/
opt/
git/
project.git
$ git
 push origin master

这样,其他人的克隆和推送也一样变得很简单:

1
2
3
4
$ git
 clone git
@
gitserver:/
opt/
git/
project.git
$ vim
 README
$ git
 commit -am
 'fix for the README file'

$ git
 push origin master

用这个方法可以很快捷的为少数几个开发者架设一个可读写的 Git 服务。

作为一个额外的防范措施,你可以用 Git 自带的 git-shell 简单工具来把 git 用户的活动限制在仅与 Git 相关。把它设为 git 用户登入的 shell,那么该用户就不能拥有主机正常的 shell 访问权。为了实现这一点,需要指明用户的登入shell 是 git-shell ,而不是 bash 或者 csh。你可能得编辑 /etc/passwd 文件

1
$ sudo
 vim
 /
etc/
passwd

在文件末尾,你应该能找到类似这样的行:

1
git
:x:1000
:1000
::/
home/
git
:/
bin/
sh

把 bin/sh 改为 /usr/bin/git-shell (或者用 which git-shell 查看它的位置)。该行修改后的样子如下:

1
git
:x:1000
:1000
::/
home/
git
:/
usr/
bin/
git-shell
在这之后,通过执行su git 可能会报错:
git-shell报错
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
解决方法:
     

解决办法:
将目录/usr/share/doc/git/contrib/git-shell-commands拷贝到git用户下 /home/git/
修改所有者chown -R git.git git-shell-commands
如果该目录下的help和 list没有执行权,那么再给它加执行权
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list

su git测试下,应该能看见
Run ‘help’ for help, or ‘exit’ to leave. Available commands:list
命令描述,摘自README
help: Prints out the names of available commands.
list: Displays any bare repository whose name ends with “.git” under user’s home directory.

这样子保证了安全,使用ssh连接git用户时,将只提供help 和 list两个命令。

我采用在自己的笔记本虚拟机上建立git代码库,在实验室各个服务器上通过git clone 的方法进行克隆。

centos 没有git的包,但redhat就有。。。

安装git方法:

 

CentOS 4.7 中安装 git

在 CentOS 4.7 中安装 git 的方法。
* 如果需要git支持http协议,系统一定要安装了curl-devel包。
安 装方法yum install curl-devel

  1. 下载git源代码
    wget http://kernel.org/pub/software/scm/git/git-1.7.6.1.tar.bz2

     

    也可以访问git官方站点,下载git源代码。

    http://git-scm.com/download

    或者在这里下载:

    https://skydrive.live.com/redir.aspx?cid=7f0c5aff44a7e914&resid=7F0C5AFF44A7E914!358

  2. 解压缩源代码
    tar jxvf git-1.7.6.1.tar.bz2
  3. 进入源代码目录
    cd git-1.7.6.1
  4. 创建make文件
    ./configure
  5. 编译
    make
  6. 安装
    make install
    该命令会将git安装到“/usr/local/bin”目录下。

文章评论

中美印日四国程序员比较
中美印日四国程序员比较
漫画:程序员的工作
漫画:程序员的工作
代码女神横空出世
代码女神横空出世
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
我的丈夫是个程序员
我的丈夫是个程序员
Java程序员必看电影
Java程序员必看电影
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
10个调试和排错的小建议
10个调试和排错的小建议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
编程语言是女人
编程语言是女人
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员都该阅读的书
程序员都该阅读的书
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员和编码员之间的区别
程序员和编码员之间的区别
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为什么程序员都是夜猫子
为什么程序员都是夜猫子
每天工作4小时的程序员
每天工作4小时的程序员
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
我是如何打败拖延症的
我是如何打败拖延症的
程序员必看的十大电影
程序员必看的十大电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
鲜为人知的编程真相
鲜为人知的编程真相
旅行,写作,编程
旅行,写作,编程
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
 程序员的样子
程序员的样子
程序员的鄙视链
程序员的鄙视链
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有