1.安装Git和SSH
sudo apt-get install git
sudo apt-get install ssh
service ssh start
2.新建用户
sudo adduser git
3.创建登录证书
创建路径.ssh,然后创建authorized_keys文件,这里路径和文件名不能任取,该文件用于存放各个git客户端的RSA公钥,只有在这个列表里的客户端才能连接git服务。公钥在下一步创建。
cd /home/git/
sudo mkdir .ssh
sudo touch .ssh/authorized_keys
4.本地端创建密钥
在本地计算机创建ssh密钥,执行如下代码,中途全默认按回车即可
sh-keygen -t rsa
在用户根目录的.ssh文件夹内,id_rsa.pub就是我们要的公钥
5.本地端公钥上传
把id_rsa.pub传到服务器.scp是ssh的文件复制命令,中途输入yes,然后输入刚才创建git账号的密码
scp id_rsa.pub git@103.66.218.190:/home/git/
6.服务器添加用户公钥
在服务器端进行。使用cat指令将公钥追加到authorized_keys文件。
sudo sh -c "cat id_rsa.pub >> .ssh/authorized_keys"
如果想确认是否成功,可以输入命令查看
head -n 5 authorized_keys
7.创建仓库存放路径并设置所属用户为git
sudo mkdir gitrepo
sudo chown git:git gitrepo
8.初始化仓库并设置所属用户为git
这里建了一个叫test的仓库
cd /home/git/gitrepo
sudo git init --bare test.git
sudo chown -R git:git test.git
因为这里的test.git路径下有多个文件,所以加-R参数递归。
到此,git服务器就算搭建完成,URL地址如下:
git@103.66.218.190:/home/git/gitrepo/test.git
安全选项
公钥列表里的客户端都可以无需密码直接可以使用git用户登录shell,如:
ssh git@103.66.218.190
下面通过修改/etc/passwd实现限制:
sudo nano /etc/passwd
找到git用户,一般都在最后,按键盘方向键移动光标到最后,将
git:x:1001:1001:,,,:/home/git:/bin/bash
改成:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
保存退出,这样就OK了。