git服务器搭建 linux,centos配置git
声明:本教程,仅作为配置的记录,不展开细节,要求你有一点linux的命令基础,仅作为配置参考。
1.系统环境
系统:Linux:CentOS 7.2 64位
由于CentOS内置了OpenSSH,如果你的系统没有,请自行安装。
检查ssh版本
$ ssh -V
#输出以下表示没有问题,可以继续。版本可能不一致,就用吧。
OpenSSH_6.6.1p1,OpenSSL 1 . 0 . 1 e-FIPS 2013年2月11日
为了避免系统环境与其他环境之间的不一致,请检查您的系统版本,并相应地修改其他发行版。
2.安装git
建议采取以下措施切换到root用户。
#请确保您切换到root帐户
$ su根
$ yum install -y git #验证安装是否成功$ git - version #输出以下内容以表示成功:git version x.x.x.x
3.添加git的托管账户并设置密码。
设置一个专用于管理git的帐户不是必需的,但是建议这样做。
#添加git帐户
$ adduser git
#修改git的密码$ passwd git #然后输入git的密码两次进行确认。#看git是否安装成功$ cd /home ls -al #如果已经有git,那么就表示为,参考如下:DRWXR-XR-x . 5 root root root 4096 apr 4 15:03。DR-XR-XR-X.19根根根4096 APR4 15: 05.DRWX-10 git git 4096 APR4 00: 26 git #默认情况下,我们还被赋予一个名为
4.Git的权限管理
git仓库的权限管理可以手工管理和配置,也可以通过其他辅助工具进行管理和配置。如果是小团队,可以通过ssh公钥直接管理。如果是更大的团队,最好用gitolite或者gitosis,两者都差不多,一个是Perl开发,一个是Python开发。
下面我将分别介绍手动管理权限和使用gitolite的方式。注意,两者是不相容的,不能混用。
5.Git的手动权限管理
经过以上步骤,其实服务器已经基本配置好了,只是需要设置权限,配置远程访问git库的方式。我们只介绍ssh,https不介绍。
5.1配置服务器的ssh访问
切换到git帐户,创建ssh的默认目录和用于验证公钥的配置文件。
# 1.切换到git帐户
苏吉特
# 2.转到git帐户$ cd /home/git # 3的主目录。创建的配置。嘘。如果此文件夹已经存在,请忽略此步骤。$ mkdir。ssh # 4。转到新创建的。ssh目录并创建authorized_keys文件,该文件存储客户机远程访问的ssh的公钥。$ cd/home/git/。ssh $ touch authorized _ keys # 5。设置权限。这一步不能省略,也不要更改permissions值,否则会报错。$ chmod 700 /home/git/。ssh/$ chmod 600 /home/git/。ssh/授权密钥
至此,服务器的配置基本完成。接下来,您需要将客户机的公钥复制到authorized_keys文件中。
5.2配置客户端的ssh私钥,并上传到服务器
下面是客户端创建ssh私有密钥和副本的过程,如果您有一个超出创建私有密钥过程的私有密钥。
请使用您的客户端进入终端(如果只有一台计算机,您可以使用不同的帐户来模拟不同的客户端)
步骤1:创建客户机的ssh私有密钥和公共密钥
检查您是否已经拥有ssh公钥和私钥:输入用户的主目录。
用户目录:
Windows系统:C:Users用户名
Linux系统:/home/用户名
Mac系统:/用户/用户名
然后检查是否有。ssh文件夹,以及该文件夹下是否有以下文件。
#在……用户主目录的ssh文件夹
身份证_rsa
id_rsa.pub #我们要使用的私钥
如果没有,那么使用ssh-keygen创建ssh的私有密钥。
$ ssh-keygen -t rsa
#接下来,默认使用三个回车符。
成功创建私钥后,检查用户目录是否有意添加了公钥文件id_rsa.pub
步骤2:将私钥复制到git的服务器上
如何将客户端文件复制到服务器?我建议用scp命令复制。
以下面的mac系统为例:
#首先,输入。我的用户的主目录的ssh目录,注意用户名xxx被替换为您自己的。
$ cd /Users/xxx/。ssh #下面的命令是:将本地的id_rsa.pub文件复制到aicoder.com服务器,登录aicoder.com服务的账号是git。#冒号后默认是git账号的主目录。最后文件另存为laoma.pub #注意:把域名改成自己的或者ip,最后的文件名可以自己设置,后面还是有用的。$ scp。/id_rsa.pub git@aicoder.com:宋承宪/老马. pub
5.3服务器端添加客户端的SSH公钥
切换到服务器端,将刚刚上传的laoma.pub文件的内容添加到authorized_keys,这样就可以允许客户端ssh访问了。
#切换到git帐户
苏吉特
$ cd /home/git/。检查。authorized_keys和laoma.pub文件的ssh目录#。# -authorized _ keys # `-laoma.pub #如果是这样,则执行以下操作将laoma . pub文件的内容添加到authorized _ keys。$ cat laoma.pub authorized_keys #表示追加到文件后面。主要是,如果使用其他编辑器,每个ssh pub应该在单独的行上。为了方便和简单,建议使用cat命令。
到目前为止,您配置的客户端应该可以通过ssh使用git帐户直接登录到服务器。(当然不安全,后期可以控制)
#在客户端使用ssh测试连接到远程服务器。请将域名aicoder.com更改为您的ip地址或域名。
$宋承宪git@aicoder.com
#第一次连接有警告,只需输入yes继续。如果可以连接,恭喜你的ssh配置。
5.4在服务器端创建一个测试git仓库
输入服务器的终端。
#切换到git帐户
苏吉特
#输入git帐户的用户主目录。
$ cd /home/git #在用户的主目录中创建test.git存储库的文件夹
$ mkdir test.git cd test.git #初始化test.git目录中的git存储库
$ gitinit-bare #输出以下内容,表明/home/git/test.git/中的空git储存库初始化成功
Git init - bare是在当前目录中创建一个空仓库,也就是说工作区中没有文件,隐藏在Git仓库中的文件直接放在当前目录中,当前目录只用来存储仓库的版本历史等数据。
此时,客户端可以克隆或远程添加该仓库。
5.5客户端测试连接git远程仓库
客户端可以创建一个新文件夹,初始化一个仓库,然后与远程服务器上的空仓库建立连接。
#下面的外壳代码不是纯手写验证的。如有错误,请自行更正。
$ mkdir demos CD demos $ git init $ touch a . txt $ echo ai coder . com a . txt
$ git add。$ git commit -m 第一次提交
#添加当前仓库和远程仓库之间的映射$ git remote Add origin git @ ai coder . com:test . git
#将当前仓库推送到远程仓库。$ git push -u原始主机
到目前为止,我们可以尽情享受git私有服务器,但是!但是!但是!客户端可以直接ssh登录,这是一个bug,是一个不安全的隐患。参见下面如何禁用git帐户的shell登录。
5.6禁止客户端外壳登录
因为我们前面把客户端的ssh的公钥加到了远程服务器上,所以客户端可以直接通过shell登录服务器,这是不安全的,也不是我们想要的。并查看下面如何禁用shell登录:
第一步:
在/home/git下创建一个git-shell-commands目录,并将该目录的所有者设置为git帐户。可以用git账号直接登录服务器端。
苏吉特
$ mkdir/home/git/git-shell-命令
这个文件夹是git-shell使用的目录,我们需要手动创建,否则会报错:致命:交互式git shell未启用提示:~/git-shell-commands应该存在,并且具有读取和执行权限。
第2步:修改/etc/passwd文件并修改
$ vim /etc/passwd
#您可以通过vim的常规搜索快速导航到该行。在命名模式下:/git:x
#找到这个句子,注意1000可能是其他数字Git:x:1000:1000:/home/Git:/bin/bash
#改成:git:x:1000:1000:/home/git:/bin/git-shell #。最好不要直接改。可以先复制一行,再注释掉一行,修改一行,保留原来的。这就是体验!# vim快捷键:在命令模式下:yy复制行,P粘贴0光标到行首$到行尾X删除一个字符I进入插入模式#修改后退出save: esc进入命令模式,输入:wq!保存并退出。
好了,此时我们不用担心客户端通过shell登录,只允许git-shell管理git的仓库。
如果还有其他朋友想连接git服务器,只需要将自己的公钥添加到authorized_keys即可。
7.Git的自动权限管理:gitolite(不要和上面的步骤混在一起!)
如果团队比较大,我们可以用gitolite来管理,也很好用。
7.1 Gito Lite的安装和配置
配置下面的步骤5。如果您已经操作了步骤6,请注意步骤2的说明。
步骤1:添加gitolite所依赖的perl包。
$ yum install perl(Data:Dumper)
步骤2:清除服务器端配置的ssh公钥。
确定:~/。ssh/authorized_keys文件为空,或者不存在。如果已经存在,建议你重新命名,比如:authorized_keys.bak
步骤3:将管理员客户端的ssh公钥上传到服务器。
将管理员计算机的ssh的id_rsa.pub文件复制到服务器的:$ home/yourname.pub。
YourName可以自定义,最好根据不同伙伴的名字来命名。
参考:
# mac客户端
$ scp /Users/fly/。ssh/id _ RSA . pub git @ ai coder . com:malun . pub
步骤4:安装和配置gitolite
使用git帐户登录并执行以下命令。
#切换到git帐户
苏吉特
#转到git主目录$ cd /home/git
#下载gitolite的仓库$ git clone https://github.com/sitaramc/gitolite
#创建bin文件夹,您必须!$ mkdir -p $HOME/bin #在下载的仓库中用insall执行安装操作,指向的目录是目录$。/gitolite binary/install-to $ HOME/bin # setup将管理员的公钥上传到服务器到gitolite中。注意:将YourName.pub改为您自己的文件名。$ ~/bin/gitolitesetup-PK ~/your name . pub #安装完成后,检查git主目录$ ls/home/gitdrwxr-xr-x7 git git 4096 ar 3 23:50 bin #二进制DRWXRWXR-X6 git 4096 apr 3 23:40 git lite DRWX-6 git git 4096 apr 3 23:52。git lite-RW-1 git git 7130 Apr 3 23:5 2 . gito lite . RC-RW-1 git git 398 Apr 3 23:39 malun . pub #管理员公钥drwxrw-3git git4096ar3 23: 40。PKI-rw-1 git git 19 ar 4 00:26 projects . list # list(由gitolite自动创建)drwx-5 git git 4096 ar 4 00:26 repositories #-2 git git 4096 ar 4 15:50 . ssh # repositories目录中已经有两个git repositories。#.# - gitolite-admin.git #用于管理配置权限的存储库# ` - testing.git #测试存储库
好了,在这个位置,管理员可以直接将默认的远程管理仓库gitolite-admin克隆到本地来管理git服务。
步骤5:管理员在本地管理和配置服务器端仓库。
下载服务器上的远程管理仓库
#下载远程管理仓库,请将aicoder.com改为自己服务器的域名或ip。
$ gitclongit @ ai coder . com:gitolite-admin $ CD gitolite-admin #目录结构如下:#。# conf #配置文件夹# gitolite.conf #配置权限文件# keydir #客户端公钥文件夹。
7.2 gito lite的权限配置
增加其他发展伙伴。
将您合作伙伴的公钥发送给管理员。管理员将其添加到gitolite-admin warehouse的keydir目录中。注意文件名格式是username.pub,username是配置权限时的用户名。
配置用户对仓库的读写权限。
直接修改conf文件夹中的gitolite.conf文件。简单解释以下用法:
回购代表仓库。如果添加了新的repo,将代表服务器创建一个空仓库。仓库推送到服务器后,会自动创建。RW代表可读可写@all代表所有人。主开发代表分支引用:
@admin=马仑
@om=马仑bcd
回购gitolite-管理
RW=马仑
回购测试
RW=@all
报告om
rw=@ adminrwmaster=@ adminrwdev=@ om将修改应用到服务器端。
配置完成后,管理员会将修改推送到服务器,服务器会自动处理修改。
$ git添加配置
$ git添加密钥目录
$ git commit -m 添加了foo,允许访问alice、bob和carol
$ git推送
此时,登录服务器,检查/home/git/repositories/目录中是否添加了相应的仓库。
其实配置这些并不繁琐,但是需要有一定的linux经验。当然,你也可以选择使用GitLab或者Github。
我希望我最后能帮助你。