linux 搭建git 服务器

下载安装 git

 

Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

 

此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器。

  • 安装依赖库和编译工具

    为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

      安装编译工具

yum install gcc perl-ExtUtils-MakeMaker

下载 git

选一个目录,用来放下载下来的安装包,这里将安装包放在 /usr/local/src 目录里

cd /usr/local/src

到官网找一个新版稳定的源码包下载到 /usr/local/src 文件夹里

wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz

解压和编译

解压下载的源码包

tar -zvxf git-2.10.0.tar.gz

解压后进入 git-2.10.0 文件夹

cd git-2.10.0

执行编译

make all prefix=/usr/local/git

如果报错:

git-compat-util.h:280:25: fatal error: openssl/ssl.h: No such file or directory

就执行

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

 

编译完成后, 安装到 /usr/local/git 目录下

make install prefix=/usr/local/git

配置环境变量

  • 将 git 目录加入 PATH

    将原来的 PATH 指向目录修改为现在的目录

  • echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

    生效环境变量

  • source /etc/bashrc

    此时我们能查看 git 版本号,说明我们已经安装成功了。

git --version

创建 git 账号密码

  • 创建 git 账号

    为我们刚刚搭建好的 git 创建一个账号

useradd -m gituser

然后为这个账号设置密码

passwd gituser

初始化 git 仓库并配置用户权限

  • 创建 git 仓库并初始化

    我们创建 /data/repositories 目录用于存放 git 仓库

  • mkdir -p /data/repositories

    创建好后,初始化这个仓库

  • cd /data/repositories/ && git init --bare test.git

    配置用户权限

    给 git 仓库目录设置用户和用户组并设置权限

  • chown -R gituser:gituser /data/repositories
    chmod 755 /data/repositories

    查找 git-shell 所在目录

     , 编辑 /etc/passwd 文件,将最后一行关于 gituser 的登录 shell 配置改为 git-shell 的目录如下

gituser:x:500:500::/home/gituser:/usr/local/git/bin/git-shell

使用搭建好的 Git 服务

克隆 test repo 到本地

git clone gituser@193.112.34.124:/data/repositories/test.git

客户端创建 SSH 公钥和私钥

$ ssh-keygen -t rsa -C "552143501@qq.com"

此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub

id_rsa 是私钥

id_rsa.pub 是公钥

 

服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存并重启 sshd 服务:

 /etc/rc.d/init.d/sshd restart

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 gituser,所以实际存放公钥的路径是 /home/gituser/.ssh/authorized_keys

在 /home/gituser/ 下创建目录 .ssh

 mkdir .ssh

 ls -a 

然后把 .ssh 文件夹的 owner 修改为 git

[root@localhost gituser]# chown -R gituser:gituser .ssh
[root@localhost gituser]# ll -a
总用量 32
drwx------. 5 gituser gituser 4096 8月  28 20:04 .
drwxr-xr-x. 8 root root 4096 8月  28 19:32 ..
-rw-r--r--. 1 gituser  gituser 18 10月 16 2014 .bash_logout
-rw-r--r--. 1 gituser  gituser 176 10月 16 2014 .bash_profile
-rw-r--r--. 1 gituser  gituser  124 10月 16 2014 .bashrc
drwxr-xr-x. 2 gituser  gituser  4096 11月 12 2010 .gnome2
drwxr-xr-x. 4 gituser  gituser  4096 5月   8 12:22 .mozilla
drwxr-xr-x. 2 gituser  gituser  4096 8月  28 20:08 .ssh

将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件

回到 Git Bash 下,导入文件:

ssh gituser@192.168.56.101 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

需要输入服务器端 git 用户的密码

 

回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:

[root@localhost gituser]# cd .ssh
[root@localhost .ssh]# ll
总用量 4
-rw-rw-r--. 1 git git 398 8月  28 20:08 authorized_keys

可以查看一下是否是客户端生成的公钥。

 

重要:

修改 .ssh 目录的权限为 700

修改 .ssh/authorized_keys 文件的权限为 600

 

[root@localhost gituser]# chmod 700 .ssh
[root@localhost gituser]# cd .ssh
[root@localhost .ssh]# chmod 600 authorized_keys

客户端再次 clone 远程仓库

$ git clone git@192.168.56.101:/home/data/git/gittest.git

 

查看客户端项目目录:

 

项目已经 clone 了。

 

也可以使用 tortoiseGit 客户端来管理项目:

clone

 

回到顶部

 禁止 git 用户 ssh 登录服务器

之前在服务器端创建的 git 用户不允许 ssh 登录服务器

编辑 /etc/passwd

找到:

git:x:502:504::/home/git:/bin/bash

修改为

git:x:502:504::/home/git:/bin/git-shell

此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzdgtb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值