При развертывании моего сервера 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 на сервере SVNsvn
учетная запись имеет все открытые ключи всех пользователей в ее .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 и добавьте это имя пользователя во все авторизованные репозитории.