代码改变世界

git服务器安装

2012-10-15 13:21  netwy  阅读(529)  评论(0)    收藏  举报

1、安装 openssh服务器
sudo apt-get install openssh-server openssh-client

2、安装 git服务器
sudo apt-get install git-core

3、配置 git服务器

创建git服务器管理用户
sudo useradd --system -m git

修改用户密码
sudo passwd git

创建git仓库存储目录
sudo mkdir /home/git/repositories

设置git仓库权限
sudo chown git:git /home/git/repositories
sudo chmod 755 /home/git/repositories

初始化全局设置
git config --global user.name "myname"
git config --global user.email "myname@server"
4、Git repository 建立(git管理员用户)
服务器端
mkdir /home/git/repositories/test.git # Prepare directory for repository
cd    /home/git/repositories/test.git # Enter to new directory
git init --bare                       # Tell git to initiate a bare repository

4.1、参考ssh配置创建git用户的密钥对(服务器端)。
     参考第5步配置ssh公钥认证

客户端
4.2、使用git bash命令行
git clone git@192.168.25.116:/home/git/repositories/test.git
touch readme.txt
git add readme.txt
git commit -m "add file"
git push origin master

4.3、使用myeclipse
4.3.1、git和ssh2环境配置
       ssh2主目录:D:\MyEclipse-8.6.2\ssh
       私钥:用户名,文件使用git bash生成,然后拷贝到主目录中
       git版本库的主目录:D:\MyEclipse-8.6.2\git
4.3.2、创建项目
4.3.3、克隆git远程版本库,如果采用公钥认证不需要输入密码
       URI: ssh://git@192.168.25.116/home/git/repositories/ehr.git
       ssh主机别名
       URI: ssh://主机别名/ehr.git
4.3.4、共享项目到克隆的版本库
4.3.5、提交代码到版本库

5、ssh服务器端配置

vim /etc/ssh/sshd_config
#禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

#有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no

重启ssh服务
sudo /etc/init.d/ssh restart

6、ssh公钥认证

在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥
ssh-keygen -t rsa  默认生成2048位
ssh-keygen -f ~/.ssh/<filename> 指定文件名

如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥
ssh-keygen -t rsa -b 4096        

默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:
id_rsa  id_rsa.pub  known_hosts

把客户端的公钥上传到服务器端,然后把客户端的公钥添加到authorized_keys公钥认证列表中
mkdir keys
将公钥考到服务器端的用户目录keys下,公钥文件的命名:user1.pub, user2.pub
scp id_rsa.pub git@192.168.25.13:~/keys/user1.pub
把公钥拷到~/.ssh/authorized_keys中
cat ~/keys/user1.pub >> ~/.ssh/authorized_keys
或则
ssh-copy-id -i 公钥文件名 用户@主机

客户端通过私钥登录ssh服务器
ssh 用户@主机
或则
ssh -i id_rsa mailto:git@%3Cssh_server_ip>

ssh主机别名(客户端配置)
在实际应用中,有时需要使用多套公钥/私钥对,例如:

使用缺省的公钥访问 git 帐号,获取 shell,进行管理员维护工作。
使用单独创建的公钥访问 git 帐号,执行 git 命令。
访问 github(免费的Git服务托管商)采用其他公钥。
如何创建指定名称的公钥/私钥对呢?还是用 ssh-keygen 命令,如下:

$ ssh-keygen -f ~/.ssh/<filename>

注:
将 <filename> 替换为有意义的名称。
会在 ~/.ssh 目录下创建指定的公钥/私钥对。文件 <filename> 是私钥,文件 <filename>.pub 是公钥。
将新生成的公钥添加到远程主机的 .ssh/authorized_keys 文件中,建立新的公钥认证。例如:

$ ssh-copy-id -i .ssh/<filename>.pub user@server
这样,就有两个公钥用于登录主机 server,那么当执行下面的 ssh 登录指令,用到的是那个公钥呢?

$ ssh user@server
当然是缺省公钥 ~/.ssh/id_rsa.pub 。那么如何用新建的公钥连接 server 呢?

SSH 的客户端配置文件 ~/.ssh/config 可以通过创建主机别名,在连接主机时,使用特定的公钥。例如 ~/.ssh/config 文件中的下列配置:

host bj
  user git
  hostname bj.ossxp.com
  port 22
  identityfile ~/.ssh/jiangxin
当执行

$ ssh bj
或者执行

$ git clone bj:path/to/repo.git
含义为:

登录的 SSH 主机为 bj.ossxp.com 。
登录时使用的用户名为 git 。
认证时使用的公钥文件为 ~/.ssh/jiangxin.pub 。

7、Gitolite 服务器端安装

7.1、参考第3步,在客户端生成gitolite管理员账户admin的公钥文件
ssh-keygen -t rsa -f admin
scp admin.pub git@192.168.25.116:/home/git/keys/
7.2、安装gitolite
sudo apt-get install gitolite

7.3、在服务器端以专用帐号:git执行安装脚本
sudo su - git
gl-setup ~/keys/admin.pub   默认第一个公钥对应管理员
安装程序会自动将admin.pub添加到公钥列表中
创建git创库:gitolite-admin.git和testing.git
gitolite本身的管理就是通过一个git的仓库来完成的,把gitolite-admin仓库clone到本地,然后按需修改好之后push到服务端就会自动生效

7.4、配置gitolite主机别名
git clone gitolite:gitolite-admin.git

8、Gitolite 客户端安装
安装环境: 一台运行着gentoo的linux机器,ip = 192.168.1.23;一台mac osx用作客户端。

第一步我们先在gentoo上面创建一个新账户
root@192.168.1.23 ~ # useradd --system -m git-svr

第二步在客户端需要生成一对密钥对
ssh-keygen -t rsa -f admin
scp admin.pub root@192.168.1.23:/home/git-svr/.ssh/

第三步下载gitolite的源代码
osx ~ $ git clone git://github.com/sitaramc/gitolite.git

osx ~ $ cd gitplite
osx ~ $ ./src/gl-easy-install git-svr 192.168.1.23 admin

上面的三个参数,git-svr是gentoo机器上的账户,192.168.1.23就是我们要安装的目标机器的IP,admin是安装之后gitolite的管理员账号
安装过程:
首先打印出gitolite的版本信息

然后会自动创建密钥对,这个密钥对是用来给admin管理员访问服务端用的
注意在这里还会自动创建一个密钥的ssh主机别名gitolite,之后我们可以随意修改这个别名

然后会自动打开vim,里面显示的是gitolite默认的配置内容,现在我们先默认不修改,:q推出

最后,把gitolite-admin仓库clone到本地,然后按需修改好之后push到服务端就会自动生效。
git clone gitolite:gitolite-admin.git
 
9、Gitolite 配置
9.1、gitolite-admin.git说明
cd gitolite-admin/
ls -F
我们可以看出 gitolite-admin 目录下有两个目录 conf/ 和 keydir/ 。

keydir/admin.pub 文件

目录 keydir 下初始时只有一个用户公钥,即 amdin 用户的公钥。

conf/gitolite.conf 文件

该文件为授权文件。初始内容为:

#gitolite conf
# please see conf/example.conf for details on syntax and features

repo gitolite-admin
    RW+                 = admin

repo testing
    RW+                 = @all
缺省授权文件中只设置了两个版本库的授权:

gitolite-admin

即本版本库(gitolite管理版本库)只有 admin 用户有读写和强制更新的权限。

testing

缺省设置的测试版本库,设置为任何人都可以读写以及强制更新。

9.2、增加新用户
增加新用户,就是允许新用户能够通过其公钥访问 Git 服务。只要将新用户的公钥添加到 gitolite-admin 版本库的 keydir 目录下,即完成新用户的添加。

第一步、管理员从用户获取公钥,并将公钥按照 username.pub 格式进行重命名。
第二步、管理员进入 gitolite-admin 本地克隆版本库中,复制新用户公钥到 keydir 目录。
cp /path/to/dev1.pub keydir/
第三步、执行 git add 命令,将公钥添加入版本库。
git add keydir
第四步、执行 git commit,完成提交。
git commit -m "add user: dev1"
第五步、执行 git push,同步到服务器,才真正完成新用户的添加。
git push
如果我们这时查看服务器端 ~git/.ssh/authorized_keys 文件,会发现新增的用户公钥也附加其中

9.3、更改授权

参考:
Gitolite 构建 Git 服务器
http://www.ossxp.com/doc/git/gitolite.html

Gitolite安装笔记
http://liwenqiu.github.com/blog/2011/08/14/gitolite-install-handbook/