在开始假设Git服务器前,需要将现有仓库导出为裸仓库

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

现在my_project.git 目录应该有Git目录的副本,整体效果等同于

$ cp -Rf my_project/.git my_project.git

将裸仓库放到服务器上

假设域名为git.example.com 的服务器已经架设完毕,并可以通过SSH连接。

而所有的Git仓库都需要放在/opt/git 目录

$ scp -r my_project.git user@git.example.com:/opt/git

如果,连接服务器的用户对/opt/git 目录有可读权限,现在通过SSH协议就可以克隆远程仓库

$ git clone user@git.example.com:/opt/git/my_project.git

如果对/opt/git/my_project.git 目录拥有可写权限,则可以自动拥有推送权限。

如果到该项目目录中运行git init 命令,并使用--shared 选项,则Git会自动修改仓库目录的组权限为可写

$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare --shared

SSH连接

如果要为团队每个成员提供访问权,也就是建立git账户,为每个需要写权限的用户发送SSH公钥,并将其加入git账号的~/.ssh/authorized_keys

或者是让SSH服务器通过某个LDAP服务,或者是其他已经设定好的集中授权机制,进行授权。只要每个用户互殴的主机的shell访问权限,任何SSH授权机制都可视为有效。

SSH公钥

许多Git服务器都需要使用SSH公钥进行认证,如果某系统用户尚未拥有密钥,需要为其生成一份。默认,用户的SSH密钥存储在~/.ssh 目录,查看是否已经拥有密钥

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

其中,.pub 文件就是公钥,与之名称相对的是四月。如果找不到这样的文件,可以通过ssh-keygen创建它们。

在Linux/Mac中,ssh-keygen是SSH软件包提供的;在Windows中,则由MSysGit提供

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local

ssh-keygen会确认密钥存储位置,并要求输入两次密钥口令(可以留空),.pub内容

$ 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@mylaptop.local

将密钥提交给Git服务器管理员,它会加入授权文件中。

配置服务器

为配置服务器端的SSH访问,需要使用authorized_keys 对用户认证。

首先创建git用户,并为其建立.ssh目录

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

为系统用户git的authorized_keys 文件添加开发者的SSH公钥

$ 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

results matching ""

    No results matching ""