Глобальная цепочка ключей Windows Mercurial

Я пытаюсь заставить Mercurial работать на сервере сборки Windows, и у меня возникают проблемы. Я потрудился настроить цепочку ключей mercurial (мне пришлось установить tortoisehg), и она работает для каждого пользователя.

Проблема в том, что я использую Bamboo для запуска сборок, и он работает как служба NT, принадлежащая SYSTEM. Таким образом, всякий раз, когда он пытается что-либо сделать с помощью hg, ему предлагается ввести пароль.

Очевидно, я мог бы поместить пароль в конфигурационный файл, но я не хочу, чтобы открытый текстовый пароль просто лежал без дела.

Насколько я могу судить, есть два способа решения этой проблемы. Ни то, ни другое я не знаю, как это сделать:

  1. Сделайте цепочку ключей mercurial глобальной, а не для каждого пользователя. Это может быть даже невозможно.
  2. Каким-то образом войдите в систему как пользователь SYSTEM и выполните с ним несколько команд mercurial, чтобы его цепочка ключей была заполнена информацией о пользователе/пароле.
  3. Что-то совсем другое...?

Заранее спасибо за любые идеи, которые у вас могут быть!

-Бен


person Ben    schedule 28.09.2011    source источник


Ответы (2)


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

Во-первых, вы можете запустить службу bamboo от имени любого пользователя. Мне нужно было, чтобы он работал как обычный пользователь, чтобы были доступны некоторые записи реестра, которые нужны моему компилятору. Чтобы установить пользователя для службы bamboo, вам нужно отредактировать wrapper.conf (C:\Program Files\Bamboo\conf\wrapper.conf при обычной установке). Очевидно, что перед редактированием вам необходимо удалить существующую службу, если она установлена.

Самый простой способ установить учетную запись для входа — добавить ее в конец файла.

wrapper.ntservice.account=domain\username
wrapper.ntservice.password=s3cr3t.p@ssw0rd

Очевидно, вам может не понадобиться, чтобы ваш пароль для входа был в текстовом файле. Есть несколько способов обойти это, поэтому я просто укажу вам на: http://wrapper.tanukisoftware.com/doc/english/props-nt.html . wrapper.ntservice.password.prompt может представлять особый интерес.

Если вы используете ssh для Mercurial, есть еще один вариант: вы можете установить команду ssh в Mercurial.ini. Для сервера сборки я установил большинство этих команд для всей системы сразу, настроив их в файле в C:\Program Files\TortoiseHg\hgrc.d . У меня есть строка, которая выглядит так:

ssh=TortoisePlink.exe -batch -i "C:/Users/autobuilder/hgPrivKey.ppk" -l autobuilder

Для меня autobuilder — это обычный пользователь, от имени которого все работает. hgPrivKey.ppk — это файл закрытого ключа, созданный с помощью PuttyGen. У меня есть открытый ключ в файле author_keys на сервере.

Надеюсь, эти предложения помогут кому-то встать на правильный путь.

person alficles    schedule 23.11.2011
comment
Хороший! Надо будет пересмотреть и попробовать, когда появится свободное время. - person Ben; 01.12.2011
comment
Также обратите внимание на эту ошибку при работе в качестве пользовательского пользователя: оболочка агента искажает среду, так что переменная PATH не будет содержать необходимых путей, и переменная USERNAME будет солгать вам и сообщить о SYSTEM. Однако все это должно быть исправлено в 6.10. - person Paul; 06.07.2019

В итоге мне пришлось вернуть бамбукового удаленного агента из службы NT обратно в обычный старый процесс, работающий под обычным пользователем. Это, очевидно, имеет свой собственный набор ошибок в отношении управления сервером, но пока это необходимо. Я отмечу это как ответ через день или около того, если кто-то не придумает что-то лучше.

person Ben    schedule 29.09.2011