Ubuntu16.04下搭建Git服务器

由于在github的共有仓库存放代码是开源的 , 所以有些需要保密的代码不方便存放在github上 , 而购买github的私有仓库的话 , 又好像没必要 , 因此使用自己的服务器搭建一个Git服务器 , 用于实现代码托管.

1.远程登录到Ubuntu服务器

1.1设置远程请查看: Ubuntu16.04下设置远程登录
1.2输入sudo su , 回车 , 输入登录密码 , 切换到root

poorguy@ubuntu:~$ sudo su
[sudo] password for poorguy:
root@ubuntu:/home/poorguy#

2.安装Git

2.1安装git:

root@ubuntu:/home/poorguy# apt-get install git

2.2配置git , 配置完后 , git config --list 可以查看配置信息

root@ubuntu:/home/git# git config --global user.name "your name"
root@ubuntu:/home/git# git config --global user.email "your email"
root@ubuntu:/home/git# git config --list
user.name=your name
user.email=your email
root@ubuntu:/home/git#

3.创建git用户

3.1创建一个git的用户(该用户是服务器的用户) , 用于运行git服务:
期间要输入两次新增的git用户的登录密码 , 还有git用户的相关信息 , 可以使用默认的 , 直接回车即可

Adding user `git' ...
Adding new group `git' (1001) ...
Adding new user `git' (1001) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for git
Enter the new value, or press ENTER for the default
        Full Name []: git
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

3.2切换到/home目录下 , 可以看到 , 新增了一个git文件夹 , 这就是刚刚创建的git用户

root@ubuntu:/home/poorguy# cd ..
root@ubuntu:/home# ls
git  poorguy  ScatterDemo
root@ubuntu:/home#

3.3修改/home/git的权限

root@ubuntu:/home/poorguy# chmod 755 /home/git

4.在git用户下添加SSH信任

4.1使用su git切换到git用户

root@ubuntu:/home/poorguy# su git
git@ubuntu:/home/poorguy$

4.2在/home/git目录下创建.ssh文件夹 , 并设置读写权限 , 700的意思是 只有拥有者有读 , 写 , 执行权限

git@ubuntu:~$ mkdir .ssh && chmod 700 

4.3在.ssh目录下 , 创建authorized_keys文件 , 并设置读写权限 , 600的意思是只有拥有者有读 , 写权限

touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

把要连接Git服务器的PC(比如你的笔记本)中的公钥 , 这个文件就是在C:\Users\Administrator\.sshid_ras.pub文件 , 把该文件复制到/home/git/.ssh目录下 , 然后将id_rsa.pub文件追加到authorized_keys文件中:

git@ubuntu:~/.ssh$ ls
authorized_keys  id_rsa.pub
git@ubuntu:~/.ssh$ cat id_rsa.pub >> authorized_keys
git@ubuntu:~/.ssh$

5.在git用户下搭建git仓库

5.1在/home/git目录下 , 新建一个GitProjectPlace文件夹 , 用于存放所有的项目 , 然后在该目录下新建一个testProject.git文件夹 , 用于测试.

git@ubuntu:~$ mkdir GitProjecPlace
git@ubuntu:~$ cd GitProjecPlace/
git@ubuntu:~/GitProjecPlace$ mkdir testProject.git
git@ubuntu:~/GitProjecPlace$ cd testProject.git/
git@ubuntu:~/GitProjecPlace/testProject.git$ git init --bare
Initialized empty Git repository in /home/git/GitProjecPlace/testProject.git/
git@ubuntu:~/GitProjecPlace/testProject.git$

5.2修改git仓库的所属者

git@ubuntu:~/GitProjecPlace$ chown -R git:git testProject.git

6.克隆仓库到本地

6.1在本地电脑(确认已经安装git环境)中 , 切换到工作目录 , 使用git bash打开 , 执行以下命令:

Administrator@2013-20160515XD MINGW64 /e/fry_work/PoorGuy/GitVir
$ git clone git@192.168.74.128:/home/git/GitProjecPlace/testProject.git
Cloning into 'testProject'...
Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
warning: You appear to have cloned an empty repository.

会有提示说 , 这是一个空的仓库.接下来 , 就可以往仓库上传代码了.

7.限制Git用户使用SSH远程登录服务器

由于将id_rsa.pub添加到了authorized_keys中 , 所以被添加的开发者是可以通过SSH远程登录到服务器的 , 可是开发者应该只能拥有pullpush , 而不能被允许直接登录服务器 , 这样会有一定的风险 , 所以要限制通过SSH登录服务器.方法就是将git用户的shell换成git-shell , git-shell能够限制开发者只能通过SSH进行pull , push等与git相关的操作.
7.1使用cat /etc/shells查看git-shell是否已经存在shells文件中

root@ubuntu:/etc# cat shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
root@ubuntu:/etc#

7.2如果现在git-shell不存在shells中 , 使用which git-shell查看git-shell的安装位置 , 一般在/usr/bin/git-shell

root@ubuntu:/etc# which git-shell
/usr/bin/git-shell
root@ubuntu:/etc#

7.3使用vim shells , 将git-shell的安装路径添加进shell文件中

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/git-shell

7.4将shell换成git-shell

root@ubuntu:/etc# sudo chsh git -s $(which git-shell)
root@ubuntu:/etc#

7.5在本地使用SSH远程登录测试是否能够登录

$ ssh git@192.168.74.128
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.74.128 closed.
# 服务器禁止登录

至此 , 一个私人的Git服务器就大致搭建完成了.

You only get one life , it`s actually your duty to live it as fully as possible.
生命只有一次 , 你有责任让它活出精彩.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容