`

在LINUX上创建GIT服务器

    博客分类:
  • GIT
阅读更多

转载

如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境。

1. 生成 SSH 公钥

每个需要使用git服务器的工程师,自己需要生成一个ssh公钥
进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa。 .pub 文件是公钥,另一个文件是密钥。假如没有这些文件(或者干脆连 .ssh 目录都没有),你可以用 ssh-keygen 的程序来建立它们,该程序在 Linux/Mac 系统由 SSH 包提供, 在 Windows 上则包含在 MSysGit 包里:

1
2
3
4
5
6
7
8
9
$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local

它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。

现在,所有做过这一步的用户都得把它们的公钥给你或者 Git 服务器的管理者(假设 SSH 服务被设定为使用公钥机制)。他们只需要复制 .pub 文件的内容然后 e-email 之。公钥的样子大致如下:

1
2
3
4
5
6
7
$ cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@agadorlaptop.local

2. 架设服务器

首先,创建一个 ‘git’ 用户并为其创建一个 .ssh 目录,在用户主目录下:

1
2
3
4
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh

接下来,把开发者的 SSH 公钥添加到这个用户的 authorized_keys 文件中。假设你通过 e-mail 收到了几个公钥并存到了临时文件里。只要把它们加入 authorized_keys 文件

1
2
3
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys

现在可以使用 –bare 选项运行 git init 来设定一个空仓库,这会初始化一个不包含工作目录的仓库。

1
2
3
4
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init

这时,开发人员就可以把它加为远程仓库,推送一个分支,从而把第一个版本的工程上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过 shell 登入主机并创建一个纯仓库。我们不妨以 gitserver 作为 git 用户和仓库所在的主机名。如果你在网络内部运行该主机,并且在 DNS 中设定 gitserver 指向该主机,那么以下这些命令都是可用的:

1
2
3
4
5
6
7
# 在一个工程师的电脑上
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master

这样,其他人的克隆和推送也一样变得很简单:

1
2
3
4
$ git clone git@gitserver:/opt/git/project.git
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master

用这个方法可以很快捷的为少数几个开发者架设一个可读写的 Git 服务。

作为一个额外的防范措施,你可以用 Git 自带的 git-shell 简单工具来把 git 用户的活动限制在仅与 Git 相关。把它设为 git 用户登入的 shell,那么该用户就不能拥有主机正常的 shell 访问权。为了实现这一点,需要指明用户的登入shell 是 git-shell ,而不是 bash 或者 csh。你可能得编辑 /etc/passwd 文件

1
$ sudo vim /etc/passwd

在文件末尾,你应该能找到类似这样的行:

1
git:x:1000:1000::/home/git:/bin/sh

把 bin/sh 改为 /usr/bin/git-shell (或者用 which git-shell 查看它的位置)。该行修改后的样子如下:

1
git:x:1000:1000::/home/git:/usr/bin/git-shell

现在 git 用户只能用 SSH 连接来推送和获取 Git 仓库,而不能直接使用主机 shell。尝试登录的话,你会看到下面这样的拒绝信息:

1
2
3
$ ssh git@gitserver
fatal: What do you think I am? A shell? (你以为我是个啥?shell吗?)
Connection to gitserver closed. (gitserver 连接已断开。)
分享到:
评论

相关推荐

    linux环境下GIT学习讲解PPT

    本文是一个专门介绍Git的PPT,可以用来给新手讲解关于Git的知识。从Git简介、Git安装、创建Git版本库、Git版本库中的版本控制与搭建Git服务器五个方面介绍Git。

    Linux 搭建Git服务器的方法

    安装Git yum install -y git ...创建Git仓库 # 切到指定目录下 sudo git init --bare server.git # owner指定为git sudo chown -R git:git server.git 禁用git用户Shell 在 /etc/passwd 文件里把 git:x:502:502

    Git基础用法

    1. 创建git远程仓库(创建git远程服务器) 12 2. 添加远程库 14 3. 从远程库克隆 15 4、 直接关联远程库 16 7、 分支管理 17 1、 创建与合并分支 17 2、 解决冲突 21 3、 分支管理策略 24 4、Bug处理 26 5、 多人...

    详解在CentOS下搭建自己的Git服务器

    有了CentOS,那么如何搭建Git服务器呢? 1、首先需要安装Git,可以使用yum源在线安装: [root@localhost Desktop]# yum install -y git 2、创建一个git用户,用来运行git服务 # adduser git 3、初始化git仓库...

    VGit:用Java编写的简单git服务器

    用Java编写的简单git服务器 建立和运行 下载并安装Java开发工具包11的最后一个版本与NPM。 适用于Mac的Java- 适用于Linux的Java- 使用以下命令构建VGit的完整发行版: ./gradlew fullBuild 编译后的发行版位于...

    在CentOS搭建Git服务器的详细步骤

    公司内部通常会搭建自己的Git服务器,我也通过在自己的服务器上搭建练习一下。 开始前先说一下服务器信息,这里是阿里云的CentOS 6.5 64位操作系统。 一 确认服务器是否安装Git [root@iZ25r8k6ifuZ git]# rpm -qa ...

    Git权威指南PDF完整版

    第5篇 搭建Git服务器 第27章 使用 HTTP 协议/ 398 27.1 哑传输协议/ 398 27.2 智能 HTTP 协议/ 400 27.3 Gitweb 服务器/ 401 27.3.1 Gitweb的安装/ 402 27.3.2 Gitweb的配置/ 403 27.3.3 版本库的 Gitweb 相关设置/ ...

    Git gui(git客户端)64位 v2.12.0.zip

    1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。 2、在自己的机器上根据不同的开发目的,创建分支,修改代码。 3、在单机上自己创建的分支上提交代码。 4、在单机上合并分支。 5、把服务器上最新...

    virtual-display-linux:在Linux OS上创建虚拟显示监视器,以通过teamviewer或vnc服务器进行扩展显示,而无需插入任何真正的监视器

    虚拟显示Linux(VDL监视器) 只是一个简单的bash脚本,可在Linux OS上创建一些虚拟显示/监视器,以通过TeamViewer或VNC服务器进行扩展显示是的,您可以添加不带真实显示器的假显示器! 我正在使用这个简单的脚本通过...

    your_own_git:您自己的git服务器,而不是Microsoft的

    如果您由于各种原因不想再使用它,此存储库将帮助您创建自己的git服务器,并使用1欧元VPS提供程序在30分钟内从github迁移您的存储库。 最后,您将获得一个让我们加密SSL认证的git服务,该服务可与Nginx Web服务器,...

    版本控制系统git的基本使用及ssh密钥的创建与添加

    常见的版本控制系统有CVS、Git、 Mercurial、Subversion等,目前用得多、主流的版本控制系统主要是svn和git,我们可以自己在Linux和Windows搭建相应 的svn或git服务器,有兴趣可以百度搜索相关文档解决。当然...

    pycharm 在windows上编辑代码用linux执行配置的方法

    以上这篇pycharm 在windows上编辑代码用linux执行配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:pycharm远程linux开发和调试代码的方法...

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统

    1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。 2、在自己的机器上根据不同的开发目的,创建分支,修改代码。 3、在单机上自己创建的分支上提交代码。 4、在单机上合并分支。 5、把服务器上最新版...

    easy-git-deploy:厌倦了用于在Web服务器上管理GIT的复杂shell脚本? 该工具在每个方向上只有一个按钮。 轻松处理较小项目的部署(例如,静态网站,:A_button_(blood_type):Angular应用,Wordpress等)

    只要一切正常,您只需使用PULL按钮在网络服务器上创建一个新的git驱动目录,或更新现有目录。 只要未在网络服务器上进行任何文件更改(例如自动wordpress更新或上载的用户内容),此方法就起作用。 如果有任何冲突...

    GIT中文资源

    1.4.2 在 Linux 上安装 . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.3 在 Mac 上安装 . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.4 在 Windows 上安装 . . . . . . . . . . . . . . . . . . ...

    vdm:通过 vagrant 在 digitalocean droplet 上创建 minecraft 服务器

    在 debian stable 上创建 minecraft 服务器,包括每天更新的地图。 它应该被充分调整以处理 1GB 数字海洋图像上的 5 到 10 个并发用户。 如果您不熟悉云托管服务提供商、vagrant、linux 和其他 sysadmin-y 的东西,...

    aws-ec2-guide::books:使用NodeJS,Nginx和Git Hook Listener设置Linux服务器的分步指南

    使用 , 和器设置Linux服务器的分步指南。 网页版本: : 概括 创建AWS EC2实例 连接到服务器并安装NodeJS Nginx和配置 Git钩侦听器 作者 1.创建AWS EC2实例 您应该有一个注册。 他们免费提供一年的VPS服务器! :...

    Git和Github-Doc-SRKIT-MCA

    Git,我们将在本地系统上工作Github,我们将在远程系统上工作我们将分享我们的项目。 git&Github在哪里? 软件产业在线认证。 Udacity 乌迪米Coursera 静态页面托管。Linux命令创建一个文件夹-mkdir文件夹名进入...

    git-demo:Git入门

    Git由Linus Torvalds在2005年创建,用于Linux内核的开发,其他内核开发人员也为它的初始开发做出了贡献。 自2005年以来,它的当前维护者是Junio Hamano。 与大多数其他分布式版本控制系统一样,并且与大多数客户端...

    百度地图毕业设计源码-GitCourse:Git版本控制课程

    很多人都知道,Linus在1991年创建了开源Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。 Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写...

Global site tag (gtag.js) - Google Analytics