搭建 git 服务器

第一步,安装 git:

# Ubuntu
apt-get install git 
# CentOS
yum install git -y

安装成功,查询 git 版本:

[root@xxx]# git version
git version 1.8.3.1

第二步,在服务器上,创建一个git 用户组和 git 用户:

# 添加用户组
groupadd git
# 添加用户并归属到 git 用户组
adduser git -g git

也可以创建其他用户、用户组。这里的用户名和用户组名,按自己喜欢的定。这个目的主要用于权限的控制,控制哪些用户组和用户可以对仓库进行读写执行权限。

第三步,创建证书登录:
把所有需要对 git 仓库操作的用户的公钥,就是他们自己的 id_rsa.pub 文件,一般在 ~/.ssh 路径下,~ 表示用户路径。

# window
$ ls -l C:/Users/Moses/.ssh
total 9
-rw-r--r-- 1 Moses 197121 2655  8月 10 19:23 id_rsa
-rw-r--r-- 1 Moses 197121  565  8月 10 19:23 id_rsa.pub
-rw-r--r-- 1 Moses 197121 1734  9月 16 22:52 known_hosts

如果没有,可以使用 ssh-keygen 生成,也可以指定 rsa 算法生成 ssh-keygen -t rsa 。如果不嫌麻烦,一路回车就可以。为了安全起见,个人建议输入 passphrase,但是要记住它,后面提交代码都会用到。

导入到 /home/git/.ssh/authorized_keys 文件里,一行一个。如果没有该文件创建它。另外,如果你要修改这个路径,可以修改 ssh 的配置,一般路径在 /etc/ssh/sshd_config

第四步,初始化 Git 仓库:先选定一个目录作为 Git 仓库,假定是 /home/git/repos/sample.git,在目录下输入命令:

# 进入到路径下
cd /home/git/repos
# 创建一个空仓库
git init --bare sample.git

Git 就会创建一个空仓库,空仓库没有工作区,不让用户直接在该仓库下操作,而需要 clone ,也就是纯属为了共享。另外,服务器上的 Git 仓库通常都以 .git 结尾,意为它是一个 git 仓库,如果不以 .git 结尾也没关系,但 clone 时,别人可能误认为这不是一个 git 仓库。

然后,把仓库归属到 git 用户组和 git 用户下:

chown -R git:git sample.git

这样做,第二步才有意义。

第五步,禁用 shell 登录:第二步创建的 git 是可以登录到服务器操作任何一切它可以操作的文件或者目录的。出于安全考虑,我们应该让 git 用户不允许登录 shell,这可以通过编辑 /etc/passwd 文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash
# 改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git 用户可以正常通过 ssh 使用 git,但无法登录 shell,因为我们为 git 用户指定的 git-shell 每次一登录就自动退出,这就安全多了。

第六步,克隆远程仓库:现在,可以通过 git clone 命令克隆远程仓库了,在各自的电脑上运行:

git clone git@server:/home/git/repos/sample.git
# 或者
 git clone ssh://git@server/home/git/repos/sample.git

注意:server 是自己的服务器 ip 或者指向服务器的域名,后面的 /home/git/repos/sample.git 是仓库在服务器的路径,得根据实际情况变换。

如果 clone 时提示没有权限或者仓库不存在,则在未禁用 git 用户 shell 登录前,第四步时先切换到 git 用户,再初始化 Git 空仓库!这样也可以省去仓库归属 chown 这一步。

su git  # su: switch user

参考:

  • https://www.runoob.com/git/git-server.html
  • https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664
  • https://www.aneasystone.com/archives/2018/12/build-your-own-git-server.html

你可能感兴趣的:(Git/Github,Note,Git,服务器)