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

SSH + svnserve -t команда, при этом разрешая доступ к оболочке

У меня возникли проблемы с настройкой сервера хостинга веб-сайтов (например, website.com), у которого есть только одна основная учетная запись пользователя (например, имя владельца), чтобы разрешить следующее:

Итак, я устанавливаю свою пару закрытый / открытый ключ на моем локальном компьютере (ноутбук) и скопировал открытый ключ в website.comфайл /home/ownername/.ssh/authorized_keys. Я добавил этот аргумент команды в строку:

command="svnserve -t --tunnel-user=me -r /home/ownername/" ssh-rsa A...eQ== laptoplogin@laptop

Где / home / ownername / svn / - это расположение репозитория Subversion. Это позволяет мне использовать:

[laptop]$ svn co svn+ssh://ownername@website.com/svn/ project

и любые изменения, которые я вношу в проект с помощью Subversion, имеют меня указан как пользователь в комментариях к изменениям, и это здорово.

Однако, когда я захожу в систему через ssh:

  [laptop]$ ssh ownername@website.com 
  ( success ( 1 2 ( ANONYMOUS ) ...
  Connection closed.
  [laptop]$ 

Итак, возможно ли то, что я пытаюсь сделать? Честно говоря, я недостаточно знаю о туннелях ssh, чтобы знать, что делать. Есть множество сайтов, на которых обсуждается ограничение или удаление доступ к оболочке для клиентов svn, но, конечно, мне нужен доступ к оболочке в дополнение к настраиваемому имени пользователя для меня и друг.

Любая помощь приветствуется!

Решение:

Я просто установил два разных ключа id_rsa: id_rsa_shell и id_rsa_svn. Я добавил их в файл .ssh / authorized_keys на сервере. Затем для ключа "shell" я не помещаю команду, а для ключа "svn" используется svnserve с аргументами. Затем на ноутбуке я настроил файл .ssh / config так, чтобы он содержал две записи: website-shell и website-svn, каждая из которых содержит IdentityFile, указывающий на соответствующие ключи. Оболочка веб-сайта ssh работала как положено. Для команды svn в .subversion / config в разделе [туннели] я поместил:

website = ssh -p XXXX -i /home/emptyset/.ssh/id_rsa_svn

Теперь моя касса заработала:

$ svn co svn+website://website-svn/svn checkoutdirectory

Тестирование коммитов подтвердило, что аргумент svnserve --tunnel-user сработал, чтобы поместить мой псевдоним в коммит svn. Обратите внимание, что он учитывает псевдоним website-svn, определенный в .ssh / config.

Сладкий. :)

Я хотел прокомментировать это вчера, но отказался ждать кого-то более осведомленного в этой конкретной настройке. Работая с тем, что вы сказали, вы можете настроить несколько пользователей для одной и той же учетной записи, имея отдельные ключи для каждой настройки для разной структуры команд. Я, пользователь Боб будет иметь ключевую команду command = "svnserve -t --tunnel-user = Bob -r / home / ownername /" ssh-rsa A ... eQ == laptoplogin @ laptop

а Джейн будет command = "svnserve -t --tunnel-user = Jane -r / home / ownername /" ssh-rsa someother..eQ == laptoplogin @ laptop

Теперь по той же логике вы можете настроить третий общий ключ между вами, который просто выполняет bash, или поделиться паролем учетной записи, чтобы войти без ключа ssh и получить доступ к оболочке.

При этом, в стороне, вы можете просто взглянуть на Mercurial или Git, которые делают централизованную разработку в репозитории чрезвычайно простой и намного более мощной и гибкой, чем svn.