1) Add git user to remote machine
sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git
2) Create repository base dir at remote machine
sudo -u git mkdir /home/git/repositories
3) Start git-daemon for anonymous clone.
sudo -u git git-daemon --reuseaddr --verbose --base-path=/home/git/repositories/ [--detach]
4) Copy your public ssh key onto the remote machine
$ cd ~
$ ssh-keygen
$ su -
$ scp /home/user/.ssh/id_rsa.pub valid_user@ssh_host.domain.com:/pub/scm
$ ssh valid_user@ssh_host.domain.com
# cat /home/user/.ssh/id_rsa.pub >> /pub/scm/.ssh/authorized_keys
# exit
(optional)
If ssh-agent is not running:
$ eval `ssh-agent`
To avoid typing the password everytime, we can add the password to our key-agent:
$ ssh-add
To avoid typing the user on git push url we can do the following trick:
$ vim ~/.ssh/config
Add these contents:
Host localhost 127.0.0.1 HostName 127.0.0.1 User git Compression yes Protocol 2
Save and quit.
5) Now we can test it:
cd testproject
git init
git add .
git commit -m "initial import"
git remote add origin git@yourserver.com:repositories/testproject.git
touch .git/git-daemon-export-ok
scp -rp .git git@yourserver.com:repositories/testproject.git
git push --all
or,
$ git push git+ssh://127.0.0.1/pub/scm/repo.git master
(optional) whenever you wanna add another user, just
$ scp /home/newuser/.ssh/id_rsa.pub valid_user@ssh_host.domain.com:/pub/scm
$ ssh valid_user@ssh_host.domain.com
# cat /home/newuser/.ssh/id_rsa.pub >> /pub/scm/.ssh/authorized_keys