Як зберегти ім'я користувача та пароль за допомогою Mercurial?


269

Я використовував Mercurial в особистому проекті, і я вводив своє ім’я користувача та пароль кожен раз, коли хочу щось натиснути на сервер.

Я спробував додати наступне до .hgrcфайлу у своєму домашньому каталозі, але він, здається, повністю ігнорується.

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

Як це зробити правильно?

Відповіді:


328

Ви можете зробити розділ аутентифікації у своєму файлі .hgrcчи Mercurial.iniфайлі, як:

[auth]
bb.prefix = https://bitbucket.org/repo/path
bb.username = foo
bb.password = foo_passwd

Частина 'bb' є довільним ідентифікатором і використовується для узгодження префікса з іменем користувача та паролем - зручно для керування різними комбінаціями користувачів / паролів з різними сайтами (префікс)

Ви також можете вказати лише ім'я користувача, тоді вам просто доведеться ввести пароль, коли ви натискаєте.

Я також рекомендую поглянути на розширення keyring . Оскільки він зберігає пароль у ключовому кільці вашої системи замість простого текстового файлу, він є більш безпечним. Він поставляється в комплекті з TortoiseHg в Windows, і в даний час обговорюється питання про поширення його як розширення в комплекті на всіх платформах.


3
Чому це не працює, коли сервер: ssh: // HGSERVER? формат "ssh: // ім'я користувача: пароль @ HGSERVER" також не працює ..
Орен,

1
@Oren - подивіться коментар нижче - якщо ви використовуєте SSH, чому б не скористатися входом на основі ключів?
Девід Едс

@santafebound Як говориться в тексті, його "довільний" і використовується лише для асоціації імені користувача та пароля з префіксом, щоб забезпечити будь-який тег, який має для вас сенс.
Chris McCauley

Я дійсно не рекомендував би зберігати паролі в простому тексті (саме це і робить цю відповідь, навіть якщо вона також коротко згадує про кращу альтернативу).
Джаспер

170

Для цього є три способи: використовувати .hgrc файл, використовувати ssh або використовувати розширення keyring


1. НЕБЕЗПЕЧНИЙ спосіб - оновіть файл ~ / .hgrc

Формат, який працює для мене (у моєму файлі ~ / .hgrc), такий

[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password


Ви можете налаштувати скільки завгодно репостів, додавши більше трійки префікса, імені користувача, пароля, додавши унікальний тег.

Це працює лише в Mercurial 1.3, і, очевидно, ваше ім'я користувача та пароль в простому тексті - не дуже добре.


2. Безпечний спосіб - використовуйте SSH, щоб уникнути використання паролів

Mercurial повністю підтримує SSH, тому ми можемо скористатися можливістю SSH увійти на сервер без пароля - ви робите одноразову конфігурацію, щоб надати самогенерований сертифікат. Це, безумовно, найбезпечніший спосіб робити те, що ви хочете.


Ви можете знайти більше інформації про налаштування без пароля тут


3. Розширення брелока

Якщо ви хочете отримати безпечний варіант, але не знайомий з SSH, чому б не спробувати це?

З документів ...

Розширення вимагає ввести пароль HTTP під час першого витягування / натискання на / з даного віддаленого сховища (так само, як це робиться за замовчуванням), але зберігає пароль (введений комбінацією імені користувача та віддаленого URL-сховища) у базі даних паролів. Під час наступного запуску він перевіряє ім'я користувача у .hg / hgrc, потім на відповідний пароль у базі даних паролів та використовує ці дані, якщо вони знайдені.

Більш детальна інформація тут


3
Сатору, Кріс не йде про меркурій, а про ssh: ssh можна налаштувати так, що вам не доведеться ідентифікувати себе за допомогою пароля (як описано, наприклад, тут: debian-administration.org/articles/152 ).
Томіслав Накіч-Альфіревич

4
Спосіб 2 насправді є єдиним способом безпечного поводження з речами та підтримки дозволів на рівні користувача у віддаленій системі.
Пітер Роуелл

2
відповідь user570626 про використання інтеграції брелоків набагато краща, ніж будь-яка з них. @ Peter Rowell: налаштування ssh - справжній біль, якщо у вас є кілька користувачів і сховищ; вам потрібні локальні користувачі unix, і вам доведеться зникати з обмеженням команд, які можна виконувати за допомогою .ssh / санкціонованих_keys та оболонки оболонки. Не зовсім чистий розчин.
Draemon

5
@ Петер Роуелл: 1. яка різниця це має? Я сказав, що його рішення краще не швидше. 2. Це не має нічого спільного з середовищем хостингу, це суто клієнтська сторона (на відміну від вашого рішення SSH, яке потребує змін на стороні сервера для його підтримки). 3. Заблищаючи тролінг і хвастощі, я все ще кажу, що це не чисте рішення. Вам потрібен місцевий користувач, і ви повинні надати їм доступ до оболонки, а потім обмежити це. Доступ до оболонки не завжди є розумним варіантом. Я здивований, що хтось із вашого досвіду не натрапив на системного адміністратора, який не хотів надати доступ до вашої службової оболонки.
Draemon

2
@Draemon: Гадаю, у нас різний досвід. Особисто я не буду працювати в системі, де у мене немає запиту оболонки. Це робить мене повністю залежним від іншої системи, щоб вже встановити те, що мені потрібно. Мій загальний досвід полягає в тому, що якщо я не можу отримати підказку, я майже напевно не можу отримати інші сервіси, які я вважаю основними для мого робочого процесу. Різні (ключові) штрихи для різних людей.
Пітер Роуелл

65

Ніхто не згадав про розширення брелока. Це збереже ім'я користувача та пароль в системний брелок, що набагато безпечніше, ніж зберігання ваших паролів у статичному файлі, як згадувалося вище. Виконайте наведені нижче дії, і вам слід добре пройти. У мене це було запущено на Ubuntu приблизно за 2 хвилини.

>> sudo apt-get install python-pip
>> sudo pip install keyring
>> sudo pip install mercurial_keyring

**Edit your .hgrc file to include the extension**
[extensions]
mercurial_keyring = 

https://www.mercurial-scm.org/wiki/KeyringExtension


1
Це моє улюблене рішення. ... і лише до другого, що сказав @hadrien, після описаних трьох дій це працює як шарм на Mac OS X.
ngeek

Я також другий @ngeek за відправку мені!
Хадрієн

У Windows як мінімум TortoiseHg підтримує розширення ключів: Глобальні настройки -> Розширення -> mercurial_keyring
user272735

На жаль, на даний момент розширення keyring має помилку в Windows, де він може одночасно зберігати лише один пароль. Дивіться це питання .
Лорен Холст

Це здається найкращим рішенням, але коли я намагаюся використовувати його на OSX, python segfaults при спробі отримати пароль з брелка.
Ісаак

30

Простий хак - це додати ім'я користувача та пароль до URL-адреси push у .hg/hgrcфайлі вашого проекту :

[paths]
default = http://username:password@mydomain.com/myproject

(Зверніть увагу, що таким чином ви зберігаєте пароль у простому тексті)

Якщо ви працюєте над декількома проектами в одному домені, ви можете додати у свій файл правило перезапису~/.hgrc , щоб уникнути повторення цього проекту для всіх проектів:

[rewrite]
http.//mydomain.com = http://username:password@mydomain.com

Знову ж таки, оскільки пароль зберігається у простому тексті, я зазвичай зберігаю лише своє ім’я користувача.

Якщо ви працюєте в Gnome, я пояснюю, як тут інтегрувати Mercurial і Gnome Keyring:

http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/


Однак я завантажив розширення, проте, коли я намагався здійснити натискання, запит на пароль відмовляється мені пропустити :( Можливо, я зробив це неправильно. Я ніколи раніше не використовував Gnome Keyring. Дякую все одно.
satoru

Ви можете скористатися параметрами --debug та --verbose для hg push, щоб побачити, що відбувається не так ...
Roberto Aloi

ідеально підходить для конкретного випадку ... якщо ви використовуєте ssh, вам не потрібно вводити пароль ... ось для чого ключі
beauXjames

Припустимо, що у вас є розкіш пристрою, від якого, звичайно, можна вимкнути відкритий ключ.
Девід Дано

23

NOBODY вище пояснив / уточнив терміни для початківця користувача. Вони плутаються в термінах

.hg / hgrc - цей файл використовується для сховища в локальному / робочому просторі / в папці .hg фактичного сховища.

~ / .hgrc - цей файл відрізняється від наведеного нижче. цей файл знаходиться в ~ або домашньому каталозі.

myremote.xxxx = ..... bb.xxxx = ......

Це один із рядків у розділі [auth] розділ / директива, використовуючи при цьому розширення ртутних ключів. Переконайтесь, що ім’я сервера, яке ви туди помістили, збігається з тим, що ви використовуєте, роблячи "hg clone", інакше ключовий брелок, скажімо, користувач не знайдений. bb або myremote у рядку нижче - це "псевдонім ім'я", яке ви ПОВИНЕН дати, роблячи "hg клон http: /.../../ repo1 bb or myremote" в іншому випадку, це не буде працювати, або ви повинні переконатися, що ваш місцевий .hg / hgrc файл сховища містить той же псевдонім, тобто (те, що ви дали під час клонування hg .. як останній параметр).

PS наступні посилання для чітких деталей, вибачте за швидко написані граматики.

Наприклад: Якщо всередині ~ / .hgrc (домашній каталог користувача в Linux / Unix) або mercurial.ini в Windows в домашній каталог користувача, міститься наступний рядок, і якщо ви це робите

`"hg clone http://.../.../reponame myremote"`

, тоді вам ніколи не буде запропоновано вводити облікові дані користувачів більше одного разу за http-репосилання. У ~ / .hgrc під [розширеннями] рядок для "mercurial_keyring =" або "hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py" .. один з цих рядків повинен бути там.

[auth]
myremote.schemes = http https
myremote.prefix = thsusncdnvm99/hg
myremote.username = c123456

Я намагаюся дізнатися, як встановити властивість PREFIX, щоб користувач міг клонувати або виконувати будь-які операції з Hg без підказок користувача / пароля та не турбуючись про те, що він згадував у http: // .... / ... для ім'я сервера під час використання посилання Hg repo. Це може бути IP, ім'я сервера або FQDN сервера


4

установка mercurial_keyring на Mac OSX за допомогою MacPorts:

sudo port install py-keyring
sudo port install py-mercurial_keyring

Додайте до ~ / .hgrc:

# Add your username if you haven't already done so.
[ui]
username = email@address.com

[extensions]
mercurial_keyring =

Після запуску цих команд та оновлення мого .hgrc-файлу я отримую "жоден модуль з ім'ям mercurial_keyring" у TortoiseHg.
Данк

Переконайтеся , що у вас є правильна версія Python, як описано тут: stackoverflow.com/questions/5173197 / ...
PhM

2

Якщо ви використовуєте TortoiseHg, вам потрібно виконати ці три дії, показані на знімку екрана, що додається, це додасть ваші облікові дані для конкретного сховища, з яким ви працюєте.

введіть тут опис зображення

Щоб додати глобальні налаштування, ви можете отримати доступ до файлу C: \ users \ user.name \ mercurial.ini та додати розділ

[auth]
bb.prefix=https://bitbucket.org/zambezia/packagemanager
bb.username = $username
bb.password = $password

Сподіваюсь, це допомагає.


0

Хоча це може чи не спрацює у вашій ситуації, я вважаю корисним створити публічний / приватний ключ, використовуючи Pageant Putty.

Якщо ви також працюєте з bitbucket (.org), це повинно дати вам можливість надати відкритий ключ до вашого облікового запису користувача, і тоді команди, які звертаються до сховища, будуть захищені автоматично.

Якщо Pageant не запускається для вас під час перезавантаження, ви можете додати ярлик до Pageant у своє меню "Пуск" для Windows, і для цього ярлика може знадобитися "Властивості", заповнене місцем вашого приватного (.ppk) файлу. .

Із цим на місці потрібно буде налаштувати Mercurial та ваші локальні сховища для натискання / перетягування за допомогою формату SSH.

Ось кілька докладних інструкцій щодо Atlassian для Windows АБО Mac / Linux.

Вам не потрібно приймати моє слово за це, і немає сумнівів, інші способи це зробити. Можливо, ці кроки, описані тут , більше для вас:

  1. Запустіть PuttyGen з пуску -> PuTTY-> PuttyGen
  2. Створіть новий ключ і збережіть його у форматі .ppk без парольної фрази
  3. Використовуйте Putty для входу на сервер, до якого ви хочете підключитися
  4. Додайте текст відкритого ключа з PuttyGen до тексту ~ / .ssh / autorizirane_keys
  5. Створіть ярлик до .ppk-файлу із пункту Пуск -> Шпаклівка до старту -> Запуск
  6. Виберіть ярлик .ppk у меню "Запуск" (це відбудеться автоматично при кожному запуску)
  7. Дивіться піктограму Pageant у системному треї? Клацніть правою кнопкою миші та виберіть "Нова сесія"
  8. Введіть ім'я користувача @ ім'я хоста в поле "Ім'я хоста"
  9. Тепер ви ввійдете автоматично.

0

Використовуйте розширення брелока. Додати нижче файл у файл mercurial.ini.

[розширення] mercurial_keyring =

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.