git-在ubuntu/debian搭建简易的git服务器

安装git

sudo apt-get update 
sudo apt-get install git -y

创建一个git用户并建立一个 .ssh 目录和验证文件:

sudo adduser git
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys # ssh用户验证

然后将ssh公钥添加到authorized_keys文件中,一行一个

配置用户登陆权限

公钥添加成功后,用户可以通过ssh直接登陆git用户的shell,为了防止这个问题,我们需要限制git用户登陆

git提供了一个名为git-shell 的工具,你可以方便地将用户 git 的活动限制在与 Git 相关的范围内。

如果将 git-shell 设置为用户 git 的登录 shell(login shell), 那么该用户便不能获得此服务器的普通 shell 访问权限。 若要使用 git-shell,需要用它替换掉 bash 或 csh,使其成为该用户的登录 shell。 为进行上述操作,首先你必须确保 git-shell 的完整路径名已存在于 /etc/shells 文件中:

cat /etc/shells   # 查看列表
which git-shell   # 检测git-shell安装
sudo -e /etc/shells  # 将上面的结果添加到这里的末尾

现在你可以使用 chsh <username> -s <shell> 命令修改任git用户的 shell:

sudo chsh git -s $(which git-shell)

这样,用户 git 就只能利用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell。

su git # 尝试进入git用户shell
或
ssh git@yourserver

显示下面 内容表示成功

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
注意,这样只是禁止了git用户的shell访问,并不会阻止访问git相关的服务

添加项目

创建一个空目录作为git服务器的根路径:

sudo mkdir /git

授予git用户所有权

sudo chown -R git:git /git

从服务器上创建空项目仓库

cd /git
mkdir yourprojectname.git
cd yourprojectname.git
git init --bare
# Initialized empty Git repository in /git/yourprojectname.git/

本地项目创建空项目仓库

git clone --bare my_project_apth my_project_apth.git

这样会在当前路径创建一个 my_project_apth.git的空仓库

然后将这个仓库上传到服务器

scp -r my_project_path.git root@gitserver:/git/

注意使用非root用户上传可能需要授予可写权限

上传本地代码 

cd my_project_path
git init
git add .
git commit -m 'initial commit'
git remote add origin git@gitserver:/git/yourprojectname.git #刚才的git地址
git push origin master

测试:

git clone git@gitserver:/git/yourprojectname.git
or
git pull git@gitserver:/git/yourprojectname.git

如果下载失败请检查服务器上仓库权限,

sudo chown -R git:git /git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值