ssh-keygen с другим пользователем для подрывной деятельности - PullRequest
4 голосов
/ 28 февраля 2009

Я не могу понять, как создавать открытые / закрытые ключи для других пользователей на моем сервере. На моем сервере я набираю следующее через оболочку

(uiserver): john:> ssh-keygen -t dsa

После этого я ввожу имена файлов и пароль, что успешно приводит к закрытому ключу и паре открытого ключа для "john". Теперь, когда я использую этот ключ для входа в ssh в своем хранилище subversion (сидя на john), все действия регистрируются как «john». Это прекрасно.

Итак, я хочу создать пару открытый / закрытый ключ для "george", чтобы он мог получить доступ к моему серверу. Я повторил ssh-keygen с моего сервера. Затем я дал закрытый ключ Джорджу. Джордж успешно установил ключ, но каждый раз, когда он выполняет действие в репозитории svn, subversion записывает свои действия как «john» вместо «george». Как мне получить Subversion, чтобы распознать разницу между «Джорджем» и «Джоном»?

Я посмотрел в authorized_keys2 и заметил, что последний комментарий для обоих ключей - "john @ uiserver". Я попытался отредактировать комментарий, но Subversion все еще не может распознать разницу между Джорджем и Джоном.

Дополнительная информация

У меня есть полу-рабочее решение, основанное на ответе Джулиано. Я пошел на "Дэвид" машину (Linux), сделал ключи prv / pub, прикрепил ключ pub к авторизованному ключу john's_keys2. Отлично! SVN регистрирует изменения Дэвида как Дэвид.

Я пошел на компьютер "george" (windows xp), использовал puttygen для создания ключей prv / pub, прикрепил ключ pub к авторизованному joke_jys2 Джона. Джордж может получить доступ к SVN, но все его изменения все еще зарегистрированы как Джон. Я пробую туннельное решение bojo, как только выясню, где его настроить в TortoiseSVN.

1020 * ОТВЕТ *

Я использовал вариант 2 ответа Божо. В конце концов, все, что мне нужно было сделать, это добавить следующую строку в мой authentic_keys2

command="svnserve -t --tunnel-user=george",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss <george's long public key> == meaningful comment

Я также добавил строку

george=george's password

в мой / pathtorepository / conf / passwd в мой файл паролей Subversion

Ответы [ 4 ]

4 голосов
/ 28 февраля 2009

Затем я передал закрытый ключ Джорджу.

Личные ключи называются личными по причине. Они никогда не предназначены для передачи таким образом. Джордж должен создать свою собственную пару ключей в своей пользовательской среде. Но это не связано с проблемой, с которой вы столкнулись. Ключи - это просто основные факторы действительно большого числа (упрощенно для легкого понимания). Идентификация пользователя - это не часть ключа, а «метка», прикрепленная к ключу, которую SSH не использует.

Из вашего описания вы просите Джорджа войти в учетную запись Джона через SSH. То, что определяет пользователя, вошедшего в систему в действиях SVN, никак не связано с парой ключей, используемой для аутентификации, а с пользователем, который действительно регистрируется.

Итак, Джордж должен иметь свою учетную запись для входа на сервер SVN, репозиторий должен быть общим для обеих учетных записей, а Джордж должен использовать свою собственную учетные данные для входа на сервер.

URL Джона: svn + ssh: // john @ svn-server / path / to / repo

URL-адрес Джорджа: svn + ssh: // george @ svn-server / path / to / repo

3 голосов
/ 28 февраля 2009

Ознакомьтесь с инструкциями по использованию команды --tunnel-user здесь, в svn manual . Я предполагаю, что причина, по которой Джордж появляется как Джон, заключается в том, что вы не указываете сеансу ssh, какой он пользователь, поэтому он по умолчанию относится к учетной записи Джона.

Чтобы уточнить, оригинальный плакат имеет два варианта.

  1. Создать новую учетную запись пользователя для Джорджа. Это предполагает, что у него есть права суперпользователя.
  2. Сгенерируйте второй ключ (в идеале это делает Джордж), добавьте его в файл .ssh / authorized_keys учетной записи Джона и добавьте вышеупомянутые связанные команды в файл .ssh / authorized_users, как описано. Ссылка также описывает, как ограничить доступ дополнительного пользователя к учетной записи John.
0 голосов
/ 03 января 2012

Вы можете попробовать, используя:

ssh-keygen -C "george"
0 голосов
/ 28 февраля 2009

Это связано с SO вопросом , указывающим на запись в блоге svn over ssh запрашивает неправильное имя пользователя ?

Решением было создать файл конфигурации в каталоге george .ssh и добавить следующее:

Host uiserver
User george
...