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)4
Ознакомьтесь с инструкциями по использованию команды --tunnel-user здесь, в руководстве по svn . Я предполагаю, что причина, по которой Джордж появляется как Джон, заключается в том, что вы не сообщаете сеансу ssh, какой это пользователь, поэтому по умолчанию используется учетная запись Джона.
Чтобы уточнить, у оригинального плаката есть два варианта.
- Создайте новую учетную запись пользователя для Джорджа. Это предполагает, что у него есть доступ суперпользователя.
- Создайте второй ключ (в идеале это сделает Джордж), добавьте его в файл .ssh / authorized_keys учетной записи John и добавьте указанные выше связанные команды в файл .ssh / authorized_users, как описано. Ссылка также описывает, как ограничить доступ дополнительных пользователей к учетной записи John.
Связано ли это с этим вопросом 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