HTTPS SSH
-*- markdown -*- # subssh # Homepage: http://bitbucket.org/epeli/subssh/ Author: Esa-Matti Suuronen <esa-matti aet suuronen dot org> Subssh is a bare minimal shell for exposing minimal amount of commands for untrusted users. Eg. if you want to restrict users' access to svn- Mercurial- or/and git-repositories only. ## Features ## - Interactive shell. - Multiple users can use single account. - Users are distinguished by public SSH-keys in ~/.ssh/authorized_keys file. - Keys can be managed from the shell. - Easily extendable. [Example](http://bitbucket.org/epeli/subssh/src/tip/subssh/app/example.py). - Version control management (Git, Mercurial and Subversion are supported). - Users can create, delete, fork and rename repositories. - Permissions management. Users can set who can read/write their repositories. - Repository publishing. Users can make their repositories public using some web interface (eg. gitweb, websvn). Not included. Subssh just makes symlinks to a configured repository when user decides to publish a repository Subssh is inspired by [GitHub][h], [Gitosis][s], [YouSource (Verso)][y] and [CherryPy][c] (for the extension system). [h]: http://github.com/ [s]: http://eagain.net/gitweb/?p=gitosis.git [y]: http://sovellusprojektit.it.jyu.fi/verso/ [c]: http://cherrypy.org/ ## Requirements ## - Should work with Python 2.4, 2.5 and 2.6. Mostly tested with 2.5. - OpenSSH server. Well, subssh can be run locally, but there's really no point doing that... - Git (for the Git app). - Mercurial (for the Mercurial app). - Subversion (for the Subversion app). ## Installing ## No releases are made yet, but you can try installing from git-repository. Since is there is only a development version available, usage of a Python [virtualenv][e] is highly recommended. In Debian based distros it can be found from *python-virtualenv* -package. $ virtualenv subsshenv $ source subsshenv/bin/activate If you have also [setuptools][t] installed you can install the tip (latest version in repository) with easy_install: $ easy_install http://bitbucket.org/epeli/subssh/get/tip.tar.bz2 Otherwise you can install it manually: $ hg clone http://bitbucket.org/epeli/subssh/ $ cd subssh $ python setup.py install [e]: http://pypi.python.org/pypi/virtualenv [t]: http://pypi.python.org/pypi/setuptools ## Usage ## Just run *subssh* and type *help*. ### Usage over SSH ### Add a public key with subssh-admin $ subssh-admin --add-key desired_username ssh-rsa AAAmyekeyhere... and login with that key. ## Example session ## $ ssh subssh@subsshserver.example.com me@subsshserver.example.com> git-init myrepo Initialized empty Git repository in /home/subssh/repos/git/myrepo.git/ Created new repository 'myrepo' Owners: me Permissions: * = r me = rw Anonymous web view is disabled Access: Read/Write ssh://subssh@subsshserver.example.com/myrepo.git me@subsshserver.example.com> git-set-permissions myfriend +rw myrepo me@subsshserver.example.com> git-web-enable myrepo me@subsshserver.example.com> git-info myrepo Owners: me Permissions: * = r me = rw myfriend = rw Anonymous web view is enabled Access: Read/Write ssh://subssh@subsshserver.example.com/myrepo.git Anonymous read http://subsshserver.example.com/repo/myrepo.git Web view http://subsshserver.example.com/viewgit/?a=summary&p=myrepo.git me@subsshserver.example.com>