ssh-keygen с другим пользователем для подрывной деятельности

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

(пользователь): Джон:> ssh-keygen -t dsa

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

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

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

Дополнительная деталь

У меня есть наполовину рабочее решение, основанное на ответе Джулиано. Я зашел на машину "david" (linux), сделал ключи prv / pub, прикрепил ключ pub к authorized_keys2 Джона. Идеально! SVN регистрирует изменения Дэвида как Дэвид.

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

ОТВЕЧАТЬ

Я использовал вариант 2 ответа Боджо. В конце концов, все, что мне нужно было сделать, это добавить следующую строку в мои authorized_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)

Решение

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

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

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

Вы можете попробовать:

ssh-keygen -C "george"

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

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

Host uiserver
User george

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

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

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

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

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

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