Subversion: svn+ssh : Доступ к SVN по ssh-туннелю
Существует множество развитых средств работы с Subversion. Но иногда необходимо поднять хранилище так чтобы: это не заняло много времени, не требовало бы сложного администрирования, хранилище было бы доступно удалённо и доступ это был бы надёжно защищён. Это совсем не сложно.
Настройка
Создаём пользователя, под которым будет работать SVN. Пусть его имя svn, а домашняя директория /home/svn.
От имени этого пользователя создаём депозитарий:
su svn
cd
mkdir svn
svnadmin create /home/svn/svn/project
Настраиваем ssh-доступ необходимых пользователей по ключу. Причём в файл authorized_keys прописываем команду, которая будет выполнять пользователем.
Записи для пользователей в authorized_keys будут выглядеть примерно так:
command="/usr/local/bin/svnserve -t -r /home/svn/svn" ssh-dss AAAAB3Nza…
Готово. Теперь можно использовать SVN:
svn list svn+ssh://svn@localhost/project
svn import tree_root svn+ssh://svn@localhost/project -m 'Init'
svn co svn+ssh://svn@localhost/project/trunk project
Безопасность
Параметр command="…" не единственный полезный параметр доступный в authorized_keys.
Внимания заслуживают:
• no-port-forwarding
• no-agent-forwarding
• no-X11-forwarding
• no-pty
• from="список шаблонов"
• environment="имя=значение"
Смысл их, наверно, понятен и без перевода. Подробно про них можно прочитать в man 8 sshd (именно sshd, а не ssh, где эта тема освещена только вскользь).