搭建git服务器

因为一些原因要搭一个 git 服务器,因为 linux 下文件管理权限的问题,在 ssh 这里踩了一点坑。

Steps0: add user

1
2
3
4
5
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

Step1: add public key

把公钥传到服务器,然后加到 authorized_keys。

1
$ cat /tmp/id_rsa.pwxcoo.pub >> ~/.ssh/authorized_keys

多个公钥用换行符 separate。

Step2: initialize repository

1
2
$ cd /srv/git
$ sudo git init --bare sample.git

然后再自己的电脑上

1
$ git clone git@gitserver:/srv/git/project.git

到这里差不多基本的功能都 ok 了。

Step3: authority management

然后要设置一下 git 用户的权限,不能让 git 用户用 ssh 登录 shell,让 git 用户默认用 git-shell 登录。

打开 /etc/passwd,修改 git 用户的默认 shell。

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

Problems

ssh failed?

我用 ssh 的时候,一直失败。。然后 ssh -Tvvv git@gitserver 命令调试的时候也没有找到有用的信息。。

后来找到了这个 log:

1
debug3: receive packet: type 51

server 对 ssh 验证的时候,response 了 type 51 的 packet,然后发现是 linux 下文件权限的问题,server 端一直读不到 authorized_keys 。。

1
2
$ sudo chown yourusername:yourusername /home/yourusername/ -R
$ sudo chmod o-rwx /home/yourusername/ -R

stricter authority management?

权限管理这里有人做过了工具,可以去找一下,我之后可能要用到。

References