Назад | Перейти на главную страницу

Аутентификация пользователей Subversion с помощью svnserve И SSH

При развертывании моего сервера Subversion мне не нравится создавать системную учетную запись для каждого пользователя, поэтому я подумал о другом методе аутентификации.

Я хотел бы использовать только одну системную учетную запись с SSH, а затем аутентифицировать пользователей, используя svnserve.

Я попытался настроить SSH так, чтобы у каждого пользователя был свой ключ и определенный svnserve команда с конкретным --tunnel-user. Я также добавил этих пользователей в свой passwd файл в моем репозитории.

Моя проблема в том, что svnserve не использует passwd файл для аутентификации --tunnel-user имена, но позволяет читать и писать, пока была выполнена аутентификация SSH.

Есть ли способ заставить svnserve запретить пользователю без пароля читать или коммитить в репозитории?

Отредактировано:

Если с моей установкой этого добиться невозможно, есть ли другой способ обслуживать Subversion по SSH без создания системной учетной записи для каждого пользователя?

В туннельном режиме проверка подлинности svnserve не выполняется в пользу проверки подлинности SSH.

"... соединение считается предварительно аутентифицированным ..."

Вы пытаетесь превратить этот подход в то, для чего он не предназначен. Как насчет использования вместо этого настройки WebDAV через SSL (с пользователями, определенными в аутентификации веб-сервера)?

Я нашел простое решение. Хотя svnserve не может снова выполнить аутентификацию с пользователем, прошедшим аутентификацию по SSH, он все же может авторизовать его с помощью файла authz.

Итак, вот моя установка:

  • пользователь svn основной аккаунт и его дом /var/svn
  • все пользователи используют svn учетная запись для SSH на сервере SVN
  • svn учетная запись имеет все открытые ключи всех пользователей в ее .ssh/authorized_keys
  • каждый открытый ключ имеет префикс command="svnserve -r /var/svn -t --tunnel-user=<user1>" (на самом деле это дольше, потому что я также отключаю туннелирование и т. д.)
  • каждый репозиторий в /var/svn имеет authz-db = authz в conf/svnserve.conf
  • каждый репозиторий имеет свой conf/authz файл для списка авторизованных пользователей:
[groups]
developers = <user1>,<user2>

[/]
@developers = rw
* =

Теперь я могу добавить пользователя, просто добавив новый открытый ключ в /var/svn/.ssh/authorized_keys с новым --tunnel-user name и добавьте это имя пользователя во все авторизованные репозитории.