Организация работы с репозитарием SVN
Subversion (также известная как «SVN») — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc. Subversion
Содержание |
Цель
Организовать работу группы людей в SVN с доступом к хранилищу через протокол svn+ssh://
Пользовательские ОС семейства Windows, доступ к хранилищу будет осуществляться с помощью программы TortoiseSVN
Требования
В панели управления должен быть активирован доступ к серверу по протоколу SSH. Такая возможность есть в тарифных планах начиная с плана "Стандарт".
Подготовка
-bash-3.2$ mkdir ~/.ssh/ -bash-3.2$ chmod 0700 ~/.ssh/ -bash-3.2$ touch ~/.ssh/authorized_keys -bash-3.2$ chmod 0600 ~/.ssh/authorized_keys
Создадим директорию в которой будет находится хранилище.
-bash-3.2$ mkdir ~/.repo -bash-3.2$ cd ~/.repo -bash-3.2$ svnadmin create ./test -bash-3.2$ pwd /hsphere/local/home/testvh22/.repo
Настройка авторизации
Генерируем ключи для наших пользователей
-bash-3.2$ ssh-keygen -t rsa -b 1024 -f user2.key -C user2 -bash-3.2$ ssh-keygen -t rsa -b 1024 -f user1.key -C user1
Для большей безопасности можно увеличить количество бит в генерируемом ключе "-b 4096"
В результате выполнения каждой из команд получаем два файла вида
user*.key - приватный ключ который мы будем использовать при настройке TortoiseSVN
user*.key.pub - публичный ключ
Копируем публичные ключи в файл authorized_keys
-bash-3.2$ -bash-3.2$ cat user1.key.pub >> ~/.ssh/authorized_keys -bash-3.2$ cat user2.key.pub >> ~/.ssh/authorized_keys
Вывод получившегося файла authorized_keys
bash-3.2$ cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAqw8PCtv/nttPljdIvlHi1KWyj5lKt4u0bCnln/qEXqbE uR2blQzd9g0R5pyrE8cbMrEAeMsWXonO1KFe1Pq9NUq6IItCo2ZY/iXXghfrpr8EUwYj0xrAhmSnJmiJ mNVEQLj2YB5gukgpN9Dwmcs01rrRh6HJjHCi9lIsBPVCd6M= user1
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAziRpaqTuFmgCQUeTqDZRQfRGKTvJs3yNuVaOUezFfsuN rh+QubdYlmHWpfbu1tZSPi0tDmoZUvP5yUIARbc+XoQr+ml9nIsM6lFMXtKX0XoR3VwvxVndBiG6D/+R WWvzR7CIWHNB9vOAnwZBIosGdicGRnC7XLwPdFvY2lkQaos= user2
Теперь отредактируем файл authorized_keys, ограничим доступ пользователям к серверу, запретим выполнение форварднига.
bash-3.2$ cat ~/.ssh/authorized_keys
command="/usr/bin/svnserve -t -r /hsphere/local/home/testvh22/.repo --tunnel-user=user1",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAqw8PCtv/nttPljdIvlHi1KWyj5lKt4u0bCnln/qEXqbEuR2blQzd9g0R5pyrE8cbMrEAeMsWXonO1KFe1Pq9NUq6IItCo2ZY/iXXghfrpr8EUwYj0xrAhmSnJmiJmNVEQLj2YB5gukgpN9Dwmcs01rrRh6HJjHCi9lIsBPVCd6M= user1
command="/usr/bin/svnserve -t -r /hsphere/local/home/testvh22/.repo --tunnel-user=user2",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAziRpaqTuFmgCQUeTqDZRQfRGKTvJs3yNuVaOUezFfsuNrh+QubdYlmHWpfbu1tZSPi0tDmoZUvP5yUIARbc+XoQr+ml9nIsM6lFMXtKX0XoR3VwvxVndBiG6D/+RWWvzR7CIWHNB9vOAnwZBIosGdicGRnC7XLwPdFvY2lkQaos= user2
Настройка TortoiseSVN
Конвертирование ключа OpenSSH в формат PPK
Для конвертирования ключа нам необходима утилита PuTTYgen
Запускаем программу - File - Load private key - Выбираем файл с приватным ключом (user1.key или user2.key)
Сохраняем приватный ключ - File - Save private key
Также конвертирование можно выполнить из командной строки на сервере
-bash-3.2$ puttygen ~/.repo/user1.key -C user1 -O private -o ~/.repo/user1.key.ppk -bash-3.2$ puttygen ~/.repo/user2.key -C user2 -O private -o ~/.repo/user2.key.ppk
Причина из-за которой автор PuTTY использует свой формат ключей, описана здесь
Именно клиент PuTTY будет использоваться в дальнейшем для подключения к хранилищу.
Настройка PuTTY для подключения к хранилищу
Последнюю версию клиента можно взять по ссылке PuTTY
- В категории SSH - Auth
Private key file for authentication - указываем полный путь к приватному файлу ключей в формате PPK (рис. 1)
- В категории Session необходимо указать
Host Name (or IP address) - указываем название сервера к которому будем подключать
Saved Sessions - указываем имя сессии, в дальнейшем будет использоваться при подключению к хранилищу
(рис. 2)
Нажать кнопку Save
Подключение к хранилищу
Запускаем проводник и вводим в строке пути адрес
svn+ssh://testvh22@team_repo
где
testvh22 - имя пользователя с которым подключаетесь к ФТП. Независимо от того, подключаетесь Вы с ключом пользователя user1 или user2 указывается пользователь ФТП Вашего аккаунта
team_repo - название подключения, которое мы настроили в PuTTY