1. 在服务器上安装git和ssh
sudo apt install openssh-server openssh-client
2. 在服务器上新建一个用户,比如就叫git,使用这个用户来进行git方面的服务。
sudo adduser git
创建用户后,切换到该用户:
su git
以下操作都在Home目录下的git用户目录里进行!
3. 在服务器上新建一个目录来放置git仓库
mkdir gitrepo
git init --bare project.git
4. 在服务器上新建ssh目录来存放访问成员的ssh公钥
mkdir .ssh
5. 在客户端上生成本机的ssh key,然后传递给服务器。
ssh-keygen
sudo scp id_rsa.pub git@192.168.174.147:~/z_id_rsa.pub
6. 在服务器上把用户公钥添加到authorized_keys文件中
cat z_id_rsa.pub >> ~/.ssh/authorized_keys
现在就可以在客户机上操作远程仓库了!
git clone git@192.168.174.147:~/gitrepo/project.git localProject
注1:用户公钥复制到服务器后可以通过shell访问服务器,有时很危险,怎么禁止用户通过shell访问呢?
将服务器上的/etc/passwd文件修改一下:
将
git:x:::,,,:/home/git:/bin/bash
改为:
git:x:::,,,:/home/git:/usr/bin/git-shell
这样用户在他的电脑上用shell来访问服务器时就会是这样:
ssh git@192.168.174.147 The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Oct 28 19:20:43 2015 from 192.168.174.146
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.174.147 closed.
注2:上面的 git init --bare project.git 是创建了一个空仓库,是没有工作区的,只是为了共享。
--End--