手把手教你在 Ubuntu 上搭建 Git 服务器

最近在写一些脚本,为了保持连续性,就在家也抽空赶进度,所以碰到了代码同步的问题,目前想到的方法有三个:

使用云盘,这个拿来即用,但是因为云盘还存放了其他一些东西,总是实时同步不太妥当;
使用 SVN,传统的代码托管工具,一直在用;
使用 Git,最新的分布式代码托管工具,据说很强大。

最后决定使用 Git,主要是学习下最新的技术。下面是操作步骤,做记录的同时也给其他同学做个指引:

先说下环境:

服务端: Ubuntu 16.04 x64
客户端: Windows7 x64

服务端配置

先使用如下命令切到 root 权限进行操作:

sudo bash

提示输入密码时,输入 root 密码即可。

登录成功后,开始安装 git,命令:

apt-get install git

提示是否继续时,输入 y 后回车,安装流程继续,并直至安装完成。

接着开始安装 ssh,命令:

apt-get install openssh-server openssh-client

同样在询问是否继续时,输入 y 后回车,安装会自动完成。

然后我们新建一个 git 专属用户,用户名也叫 git,命令:

adduser git

新建成功后会提示设置用户密码,请设置一个自己能记住的密码后继续,后续的详细信息可以酌情填写。

下面开始新建 git 仓库,我们选定仓库存放目录为 /srv 下面,仓库名 myfiles.git,所以命令:

git init --bare /srv/myfiles.git

因为当前用户是 root,为了让后面 git 专用账户能够操作仓库目录,我们需要把仓库目录授权给 git,命令:

chown -R git:git /srv/myfiles.git/

客户端操作

首先需要下载 Windows 版本的 git,下载地址:点击下载

下载完成后点击安装,并根据提示点击「下一步」,直到安装完成。

在客户端创建一个工作目录,比如我的是 gitdir,在工作目录内右键并点击 「Git Bash Here」。

在弹出的命令后窗口 clone 仓库到本地:

$ git clone [email protected]:/srv/myfiles.git
Cloning into ‘myfiles‘...
The authenticity of host ‘192.168.252.128 (192.168.252.128)‘ can‘t be established.
ECDSA key fingerprint is SHA256:zqtjAg+FGfWrT3SCp1Qa2KqhE2UOy3PmudhhrTFlm7A.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.252.128‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
warning: You appear to have cloned an empty repository.

注意请把「192.168.252.128」换成自己的服务端 ip,并且在确认时输入的是「yes」,最后输入的是创建 git 用户时候的密码。

为了客户端进行后续的提交操作,我们还需要注明当前机器的用户信息,命令后如下:

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

注册后,commit 的时候会使用这个注册信息来记录操作人信息,然后在使用 git log 时可以看到对应的信息,效果如下图:

$ git log
commit ae72bcc89ea8f5d9d3a44f0e00cf35e91a1afce8 (HEAD -> master, origin/master)
Author: sylan215 <[email protected]>
Date:   Wed Oct 18 18:37:41 2017 +0800

    测试提交

至此,我们完成整个配置过程。

文件修改并同步到 Git 服务器

配置完成后,我们就进入实际使用环节了。

首先我们先修改几个文件,并拷贝到 myfiles 目录下,然后提交到服务端,在 myfiles 下运行提交命令:

git add .
git commit -am "测试提交"
git push

带输出的命令行内容:

$ git add .
$ git commit -am "测试提交"
[master (root-commit) ae72bcc] 测试提交
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
$ git push
[email protected]‘s password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 223 bytes | 223.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 192.168.252.128:/srv/myfiles.git
 * [new branch]      master -> master

提示输入密码的地方,还是输入的 git 账户的密码。

说明:关于 git 操作的详细命令,请参考 这篇文章

提交成功后,我们在另一台机器上使用命令 git pull 同步最新内容:

$ git pull
[email protected]‘s password:
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From 192.168.252.128:/srv/myfiles
   ae72bcc..afad897  master     -> origin/master
Updating ae72bcc..afad897
Fast-forward
 test.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

对于多用户的复杂操作,请参考这篇文章

其它配置

禁用 git 账户的 shell

为了安全考虑,如果需要禁用 git 账户的 shell,可以修改 /etc/passwd 文件:

把其中的

git:x:1001:1001:git-user,,,:/home/git:/bin/bash

修改为

git:x:1001:1001:git-user,,,:/home/git:/usr/bin/git-shell

其中 /usr/bin/git-shell 的路径可以通过命令 which git-shell 获得。

使用公匙和私匙实现免密效果

上面我们使用的过程中每次都需要输入 git 用户的密码才能和服务端交互,这样会很麻烦,这时候我们可以配置公私匙来实现免密。

首先,需要在客户端生成公私匙:

ssh-keygen -t rsa

回车后会提示输入私匙的密码,如果要免密就直接回车,否则自定义一个密码(如果自定义了密码,则每次 push 和 pull 时填入的是设置的密码)。

命令执行成功后,会在当前用户目录的.ssh文件夹(Windows 目录是 X:\Users{username}.ssh, Linux 是 /home/{username}/.ssh)生成文件「id_rsa」和「id_rsa.pub」,其中 .pub 文件就是公匙,另一个是私匙。

把文件「id_rsa.pub」拷贝到服务端,并使用如下命令进行设置:

mkdir /home/git/.ssh
cp /home/currentuser/Desktop/id_rsa.pub /home/git/.ssh/authorized_keys
chown -R git:git /home/git/.ssh

说明,如果 authorized_keys 文件不存在,可以使用 cp 命令,否则请使用 cat 命令追加,比如:

cat /home/currentuser/Desktop/id_rsa.pub >> /home/git/.ssh/authorized_keys

为了保证配置生效,还需要查看 /etc/ssh/sshd_config 文件中的如下设置是否开启:

AuthorizedKeysFile %h/.ssh/authorized_keys

是否被注释掉了,如果是,则需要把前面的 # 去掉,并重启 ssh 服务(命令 service ssh restart)。

全部配置完毕后,我们试试效果:

$ git pull
Already up-to-date.

看,这次没有提示输入密码了吧,免密设置生效。

非 22 端口连接 Git

在 .ssh 配置目录现在 config 文件,内容为:

host ip地址
port 端口名

config 配置文件在 Windows 和 Mac 系统的位置为:X:/users/username/.ssh 目录,其中 X 为系统盘, username 为当前登录用户名;

如果是 liunx 系列系统,位置为 /home/username/.ssh 目录,其中 username 为当前登录用户名。

原文地址:http://blog.51cto.com/sylan215/2165154

时间: 2024-10-14 22:04:18

手把手教你在 Ubuntu 上搭建 Git 服务器的相关文章

Ubuntu上搭建Git服务器

下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用VMware虚拟机安装两台Ubantu系统,分别命名为gitServer和gitClient_01. 1.安装OpenSSH并配置SSH无密码登陆 通过命令 sudo apt-get install openssh-server,安装SSH服务. 通过命令 ps –e|grep ssh,查看ssh服务是否启动. 通过以上命令,我们为Ubantu系统安装SSH服务,并配置SSH无密码登陆,首先我们修改主机和ip配置文件:gedit /e

ubuntu下搭建git服务器

看了一些搭建git服务器的教程,都不是很详细,于是,就有了本文→_→ 环境说明: 本地:win7 IP:192.168.111.1 服务器:ubuntu 14.04 IP:192.168.111.222 服务器上: #安装git,如果有权限问题,记得再以下命令前面加上 sudo apt-get install git #新增用户(用户名为git),用于运行git服务,回车后会提示输入密码 adduser git #初始化git仓库,这里我放到/home/git/code目录下面(专门存放代码用)

如何在服务器上搭建git服务器

参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 http://wlog.cn/soft/git-ssh-server-for-debian.html 在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就

自建git服务器连接Pycharm系列二:在centos7上搭建git服务器

在自己的Linux虚拟机上,搭建git服务器,用来保存代码. centos7本身自带git,需要先卸载,安装成较新的版本. 1.卸载系统自带版本 系统已经自带 [[email protected] ~]# git --version git version 1.8.3.1 卸载git [[email protected] ~]# yum remove git [[email protected] ~]# git --version -bash: /usr/bin/git: 没有那个文件或目录 2

ubuntu完美搭建git服务器【转】

转自:http://blog.csdn.net/tommy_wxie/article/details/38779667 最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbuntu系统中搭建了下git的服务器,由于搭建过程中多多少少遇到了一些小问题,再因为个人记性不太好,所以在这里记录下来,以备不时之需.开始我已经在虚拟机的ubuntu12.04系统下已经装过一次,忘了记录,这次重新再在虚拟机的ubuntu13.10系统下一步一步的来搭建,后面介绍包括了在客户端机器(宿主机

android上搭建git服务器-gidder

最近打算搭建个私有git服务器玩玩,弄个VPS成本有点大,想起家里还有个米2S,于是 就去google搜索有木有android上的git server,经过了1个小时的摸索终于在github上发现了这个项目 https://github.com/antoniy/Gidder 经过了半个小时的折腾,终于搞起来了 废话不多讲,我直接上图吧! 因小米 2s 没有电了,这里的截图使用的Z7 MAX 主界面: 基本设置: 创建用户: 创建仓库: 给仓库增加用户并且添加权限: pc安装git客户端:http

Ubuntu 上搭建 Samba 服务器

由于经常要接收同事发送的一些文件,U盘拷来拷去的很麻烦. 在本机Ubuntu上搭了各Samba服务器,过程中遇到点小问题,记录一下 sudo apt-get install samba 创建一个共享目录 这里需要注意一下,这个目录不能创建到/home以外的其他目录,mkdir /home/sharechmod -R 0777 /home/share 编辑samba配置文件 vim /etc/samba/smb.conf 在最后添加 [myshare]path=/home/sharewritabl

在MacOS上搭建Git 服务器

创建Git服务器账号 打开[系统设置]中的[用户和组],加入新用户[git],该用户主要是提供git服务器的安全和配置环境 图1 加入新用户 配置Git服务器环境 1. 在Terminal中登陆该用户命令如下:  ssh -l git 127.0.0.1 或使用 su git 2. 配置Git服务器路径 现在可以用 —shared,--bare 选项运行 git init 来建立一个裸仓库,这会初始化一个不包含工作目录的仓库.      bogon:octopus.git git$ git in

手把手教你在Ubuntu上安装Apache、MySql和PHP

1:首先安装apache:打开终端(ctrl+Alt+t), 输入命令:sudo apt-get install apache2即可安装, 安装完后,打开浏览器,在地址栏输入:localhost或者http://127.0.0.1 看到It works,表示安装成功! 默认根目录:/var/www/ 2:安装mysql: sudo apt-get install mysql-server-5.0 安装完后,会要你新设置mysql root密码,输入你自己的密码后enter键,再确认密码. 3:安