所在位置:

搭建git服务器

如果自己有服务器,用 git 搭建自己的服务器是非常有用的,可以把自己的代码放到自己的服务器上,方便做一些自动化的测试和部署之类的,下面是自己的搭建 git 的一些步骤

系统所需要软件的基本信息

操作系统 : archlinux

git : 2.8.3

安装 git

$ sudo pacman -S git

添加一个 git 用户

$ sudo useradd git

禁止 git 用户登录 shell

编辑 /etc/passwd 文件,找到下面的内容
git:x:997:997:git daemon user:/:/bin/bash
修改为下面的内容
git:x:500:500:git version control:/home/git:/usr/bin/git-shell
现在 git 用户只能用 ssh 连接来推送和获取 git 仓库,而不能直接使用服务器的 shell。尝试普通 ssh 登录的话,会被拒绝登录。

配置访问权限

在客户端创建公钥
$ ssh-keygen -t rsa -C  '邮箱地址'
ssh-keygen 的原理如下
  1. 假如A机器想用ssh登录B机器,但不想每次输入密码
  2. 在A机器上执行 ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 idrsa,idrsa.pub或iddsa,iddsa.pub
  3. 将A机器的 .pub 文件的内容复制到B机器的 .ssh 目录的 authorized_keys 文件
  4. .ssh 所在目录的所有者是 test,那么 authorized_keys 文件的所有者也是 test
  5. 从A机器登录B机器,不再需要密码了
复制公钥

把生成 的 idrsa.pub 文件的内容复制到 /home/git/.ssh/authorizedkeys 文件中,并修改所有者为 git

$ sudo chown -R git:git /home/git
$ sudo chmod 755 /home/git 
$ sudo chmod 700 /home/git/.ssh
$ sudo chmod 600 /home/git/.ssh/authorized_keys

注意:如果这些权限没有配置好,连接的时候可能会出现 Permission denied (publickey,gssapi-with-mic) 的错误信息或者要 输入密码

修改 ssh 的配置文件 ( 配置文件在 /etc/ssh/ 目录下的 sshd_config 文件),把下面几项打开
RSAAuthentication yes  
PubkeyAuthentication yes  
AuthorizedKeysFile     .ssh/authorized_keys

重启 ssh 服务

$ sudo systemctl restart sshd.service

初始化git仓库

git 仓库可以为任意的目录,但是所有者都最好改为 git
$ cd /home/git
$ sudo git init --bare blog.git
$ sudo chown -R git:git blog.git

克隆远程仓库

第一种方式通过直接克隆,如果更改了 ssh 的端口就不适合
$ git clone git@192.168.1.1:/home/git/blog.git
$ cd blog
$ vim README
$ git commit -am 'init commit'
$ git push origin master
第二种方式通过配置来克隆,ssh 更改的端口可以写到配置文件

在 /home/用户名/.ssh/ 目录如果没有 config 文件,则建一个,内容如下

HOST myserver
HostName 192.168.1.1
User git
Port 22
IdentityFile ~/.ssh/id_rsa

可以用下面的命令进行克隆

$ git clone ssh://git@myserver:/home/git/blog.git

【上一篇】ArchLinux常用软件

【下一篇】搭建vsftpd服务器