GIT repository over LAN
Solution 1:
First of all, you need to check your openssh setup on Ubuntu server: see this HowTo.
Then you can follow this article, which mainly recommend:
$ sudo apt-get install python-setuptools
$ mkdir ~/src
$ cd ~/src
$ git clone git://eagain.net/gitosis.git
$ cd gitosis
$ sudo python setup.py install
$ sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group
--disabled-password \
--home /home/git \
git
go into your /etc/ssh/ssh_config
file and add git to the list of Allowed Users that can login.
copy your id_rsa.pub
file over to your server somewhere (in our example we're using /tmp
) and then run this command:
$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
Initialized empty Git repository in ./
$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
From your local machine, test it out with this:
git clone git@YOUR_SERVER:gitosis-admin.git
Configure gitosis for a new project. Use your favorite editor to create a new block under the gitosis one. It should look like this:
[group myrailsapp]
members = myNameAsInTheRsa.pub
writable = myNewApp
A couple of things to watch out in the above block.
First, make sure your name matches what's in your public key (that is, open your id_rsa.pub file and see that what the name says.
Second, make sure you spell writable correctly!
Once you're done, commit and push the changes up to the server.
$ git commit -a -m "created a new repository!"
$ git push
Solution 2:
Your best way of doing that would be to run a ssh server and limit your users to use git-shell
for their login shell. You can install an ssh server properly by either running one of the following commands if it has not already been installed.
sudo apt-get install openssh-server
or
sudo apt-get install dropbear
Then add /usr/bin/git-shell
to /etc/shells
by doing
sudo echo $(which git-shell) >> /etc/shells
Then use the git-shell
instead of bash
as your user shell. This will restrict the user to only being able to perform git
operations when logging into the server instead of providing the user with a full she..