У меня возникли проблемы с настройкой сервера хостинга веб-сайтов (например, 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.