千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,最近在写一些脚本,为了保持连续性,就在家也抽空赶进度,所以碰到了代码同步的问题,目前想到的方法有三个:使用云盘,这个拿来即用,但是因为云盘还存放了其他一些东西,总是实时同步不太妥当;使用 SVN,传统
千家信息网最后更新 2026年11月01日手把手教你在 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 git@192.168.252.128:/srv/myfiles.gitCloning 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)? yesWarning: Permanently added '192.168.252.128' (ECDSA) to the list of known hosts.git@192.168.252.128's password:warning: You appear to have cloned an empty repository.

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

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

git config --global user.email "you@example.com"git config --global user.name "Your Name"

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

$ git logcommit ae72bcc89ea8f5d9d3a44f0e00cf35e91a1afce8 (HEAD -> master, origin/master)Author: sylan215 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 pushgit@192.168.252.128'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 pullgit@192.168.252.128'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/masterUpdating ae72bcc..afad897Fast-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/.sshcp /home/currentuser/Desktop/id_rsa.pub /home/git/.ssh/authorized_keyschown -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 pullAlready up-to-date.

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

非 22 端口连接 Git

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

host ip地址port 端口名

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

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

命令 密码 文件 用户 目录 输入 配置 服务 提示 仓库 信息 客户 客户端 成功 账户 同步 测试 代码 内容 效果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网高科技 互联网科技工作委员会毛军 猪兼强互联网科技 互联网科技英文 苏州互联网科技贷款公司 互联网高科技企业 大白互联网科技 四个字互联网科技公司取名 互联网科技博主是什么意思 昭通云南众福互联网科技有限公司 互联网为啥属于高科技 深圳市优智互联网科技有限公司 科技大学互联网 21世纪互联网科技成就 风投北京互联网科技 江苏互联网智能科技产品出厂价 上海万顺科技互联网有限公司招聘 互联网科技手抄报图片 利用互联网等科技手段 武汉亿视互联网科技有限公司 广东万易互联网科技有限公司惠州分公司 互联网最新的科技 互联网电商科技 北京互联网科技有限公司 中盈科技互联网信息有限公司 剑昆互联网络科技有限公司临桂 互联网软件和科技 互联网新科技动漫ppt素材 河南住房之家互联网科技 互联网科技包装股份有限公司上市
0