среда, 21 июля 2010 г.

Настройка svn+ssh доступа к SVN-репозиторию
Недавно пришлось помучиться с сабжем, вот я и решил блог завести и все записать сюда, чтоб не забыть :)
Итак, поехали.

На сервере создаем юзера для работы с репозиторием, в моем случае svn
Создаем юзера для своей учетной записи - yareg
Для безпарольного доступа на сервер генерим пару приватный-публичный ключ dsa:
для линукса генерим ключи на клиенте:
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
ssh-keygen -t dsa -f ~/.ssh/id_dsa
копируем публичный ключ на сервер:
scp ~/.ssh/id_dsa.pub svn@host:~
добавляем публичный ключ в authorized_keys юзеру svn на сервере:
ssh svn@host
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
cat ./id_dsa_pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

Для мастдая ключи генерим на сервере:
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
ssh-keygen -t dsa -f ~/.ssh/id_dsa
добавляем публичный ключ в authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
забираем приватный ключ на клиентскую машину, запускаем утилититу PuTTYgen, входящую в состав PuTTY, выбираем Conversions - Import key, указываем путь к приватному ключу, кликаем "сохранить", сохраняем как файл .ppk и потом в настройках PuTTY указываем путь к нему.

Далее открываем файл /home/svn/.ssh/authorized_keys и перед публичным ключем вставляем строку:
command="svnserve -t --tunnel-user=yareg"
так, что в итоге должно получиться примерно так:
command="svnserve -t --tunnel-user=yareg" ssh-dss AAAAB3NzaC1kc3MA...
после ключа через пробел можно указать комментарий ;)

Создаем репозиторий (svnadmin create reposname), редактируем файл конфигурации /etc/sysconfig/svnserve:
директива SVNSERVE_OPTIONS должна принять такой вид:
SVNSERVE_OPTIONS="-d -r /srv/svn/repos"
где /srv/svn/repos - папка с репозиториями

Теперь мы можем получить содержимое репозитория:
svn list svn+ssh://svn@host/srv/svn/repos/reposname/
Но, как оказывается, в виндозе не так все просто.
Чтобы получить доступ к репозиторию из консоли, открываем файл C:\Documents and Settings\yareg\Application Data\Subversion\config, находим секцию tunnels и добавляем строку
ssh = D:/Programs/Inet/ssh/putty-0.54-all/PLINK.EXE -2 -i D:/path_to_key/id_dsa.ppk
, после чего проблем с доступом к репозиторию не должно возникнуть.
В NetBeans'е, после выбора Team-Checkout, пользуясь подсказками IDE, вводим путь к репозиторию:
svn+ssh://svn@connectionname/srv/svn/repos/reposname
где connectionname - сохраненное имя соединения к серверу с репозиторием в программе PuTTY
параметры туннелирования:
D:/Programs/Inet/ssh/putty-0.54-all/PLINK.EXE -l svn -i D:/path_to_key/id_dsa.ppk
У меня после этого все заработало. Удачи :)

Комментариев нет:

Отправить комментарий