阿里云ECS上搭建私人Git仓库

阿里云ECS上搭建私人Git仓库


(一)本地下载、安装XShellXftp

有其他手段实现本地操控远程服务器的可以忽略此步骤

工欲善其事,必先利其器。
我们首先下载并安装XShell(一个在本地操作服务器命令行的工具)和Xftp(一个本地和服务器进行文件传输的工具),这里推荐使用非商业用途免费下载,由于服务器在国外,可能需要科学上网,如何科学上网恕不介绍,如无法科学上网的小伙伴可以发挥聪明才智,采取适合我国国情的方法进行下载。


(二)服务器安装git

服务器上已经安装了git的可以忽略此步骤

1
2
git --version       #检查是否安装了git,我的版本是1.8.3.1
yum install -y git

(三)创建git用户,配置其sudo权限

bash中输入如下命令:

1
2
3
4
useradd git  
sudo passwd git
sudo chmod 740 /etc/sudoers # 修改/etc/sudoers为可写
vim /etc/sudoers

打开/etc/sudoers文件后,在root ALL=(ALL) ALL后添加git ALL=(ALL) ALL,保存退出。
修改git用户为管理员


(四)生成SSH密钥 、 建立SSH信任关系

(1)本地生成SSH密钥

已经生成SSH密钥的可以跳过这一步,没有生成SSH密钥的注意:
如果你不想每次使用公钥时输入密码,这一步最好不要设置密码

ssh-keygen -t rsa
以Windows系统为例,执行此命令后,会在C:\Users\YourUserName\.ssh目录下创建id_rsaid_rsa.pub两个文件,其中id_rsa.pub这个公钥就是我们需要的,复制下来。

(2)在本地和服务器建立SSH信任关系

git服务器打开RSA认证(这一步非常重要)

在bash中输入vim /etc/ssh/sshd_config,将RSAAuthenticationPubkeyAuthentication 修改为yes
AuthorizedKeysFile修改为.ssh/authorized_keys。如图:
开启RSA认证

SSH认证

在bash中输入如下命令:

1
2
3
su git    # 切换到git用户,接下来的操作都通过git用户完成  
sudo mkdir ~/.ssh
vim ~/.ssh/authorized_keys

将之前得到的id_rsa.pub公钥复制粘贴到authorized_keys中,继续执行:

1
2
chmod 600 ~/.ssh/authorzied_keys  # 修改权限  
chmod 700 ~/.ssh

如果你在本地通过ssh git@YourServerIP命令(其中YourServerIP是你的服务器IP),能够连接到服务器,说明到这一步为止,你都成功了。


(五)服务器创建git空仓库 & 设置钩子函数(Hook)

在bash中输入如下命令:

1
2
3
mkdir hexo && cd hexo     # git仓库所在位置/usr/DragonBaby308/hexo
git init --bare blog.git # 创建一个空的git仓库,我的是blog.git
sudo chown -R git:git blog.git # 将git仓库目录的拥有者设置为git用户

通过如下命令修改钩子函数(Hook)post-receive:

1
2
cd blog.git/hooks         # 进入钩子函数目录  
vim post-receive # 通过vim修改钩子函数post-receive

vim的使用方法不清楚的请参考:《Linux Shell编程及Vim的使用》

什么是钩子函数(Hook)?
钩子函数可以简单理解为一个触发器,当git进行指定操作(如:push/merge/pull)时就会触发,被存储在.git/hooks目录下。
其中post-receive函数是服务器钩子,会在整个push动作结束后运行,可以实现如给某个邮件列表发送邮件的功能。

post-receive函数中输入:
git --work-tree=Hexo项目实际位置 --git-dir=git仓库所在位置 checkout -f
比如我的,就是:
git --work-tree=/usr/DragonBaby308/hexo --git-dir=/usr/DragonBaby308/repo/blog.git checkout -f
post-receive钩子函数修改完毕后,需要修改其权限:

1
2
3
4
# 修改钩子函数权限
chmod +x post-receive
# 修改项目部署目录拥有者为git
sudo chown -R git:git /usr/DragonBaby308/hexo

(六)禁用git用户bash权限

在bsh中输入如下命令:

1
2
sudo chmod 400 /etc/sudoers   # 不要忘记,将/etc/sudoers改为只读   
vim /etc/passwd # 禁用git用户bash权限

git:x:1003:1003:,,,:/home/git:/bin/bash改成:
git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell
这样git就不可用bash了。

-------------本文结束感谢您的阅读-------------

本文标题:阿里云ECS上搭建私人Git仓库

文章作者:DragonBaby308

发布时间:2019年05月22日 - 20:15

最后更新:2020年02月14日 - 14:57

原始链接:http://www.dragonbaby308.com/ECS-Git/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

急事可以使用右下角的DaoVoice,我绑定了微信会立即回复,否则还是推荐Valine留言喔( ఠൠఠ )ノ
0%