Як зберегти пароль при використанні Subversion з консолі


106

Мені було цікаво, чи існує спосіб збереження мого пароля Subversion під час виконання svnоперацій з консолі. Консоль - єдиний варіант, який у мене є. Коли я намагаюся зробити будь-яку дію Subversion, наприклад svn commit, щоразу запитає пароль облікового запису. Чи є спосіб якось зберегти цей пароль, щоб мені не довелося його повторно вводити повторно?


Відповіді:


110

У ~/.subversion/config, напевно, є store-passwords = no. Змініть його на yes(або просто прокоментуйте його, оскільки він за замовчуванням відповідає так), і наступного разу, коли ви надасте Subversion свій пароль, він повинен зберегти його.

Ви можете переконатись у правильності власника та прав доступу ~/.subversion/config(немає загальнодоступного чи групового доступу; 600).


Не вдається знайти цей файл у Red Hat Linux 2.6.18. будь-яка ідея, де це могло бути?
Іш

3
@Ish Вам може знадобитися зробити це, якщо його ще не існує; Я думаю, SVN виглядає там у всіх дистрибутивах
Майкл Мрозек

5
+1, Після створення файлової /etc/subversion/configсистеми працюйте як очікувалося. Спасибі
Іш

@IshKumar Дякую! Працював для мене перший раз!
Аніль

15
@Seven Better Ipak, просто напишіть нову відповідь, яка є більш актуальною. ( store-passwordsОпція в configтепер застаріла. За деякими коментарями за замовчуванням, які я знайшов у своєму configфайлі; її замінено тим самим варіантом в servers).
Kyle Strand,

54

Це залежить від протоколу, який ви використовуєте. Якщо ви використовуєте SVN + SSH, клієнт SVN не може зберегти ваш пароль, оскільки він його ніколи не торкається - SSH-клієнт запрошує вас його безпосередньо. У цьому випадку ви можете використовувати ключ SSH та ssh-агент, щоб уникнути постійних підказок. Якщо ви використовуєте протокол svnserve або HTTP (S), то клієнт SSH обробляє ваш пароль і може зберегти його.


4
+1 У мене є саме ця проблема - svn + ssh завжди, завжди запитує мене паролем. Поза межами спільного доступу до відкритого ключа, чи є спосіб уникнути цього? Я спробував ssh-агент, але не пощастило.
Майкл Міковський

@MichaelMikowski Здається, пароль SSH не може бути збережений для налаштування для автоматичного входу. Ви можете створити для нього нову пару ключів, зберегти розташування приватного ключа .ssh/config, додати відкритий ключ до SVN-сервера.
lk_vc

33

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


Ви маєте на увазі папку .subversion!
khmarbaise

3
У мене була така ж проблема. У моєму конфігураційному або серверному файлі в настройках пароля магазину не було встановлено значення "ні", але це спрацювало.
Боб Б

1
Я намагався змінити всі налаштування безрезультатно. Єдине, що врешті-решт вирішило це питання - це справді видалити папку .subversion.
Майкл Нойб

Це працювало і для мене. Цікаво, що він зберігав пароль у папці ~ / .subversion / auth / svn.simple для мене.
Четан

Це зробив і для мене, але я спостерігав, у чому різниця - і виявилося право власності на каталог .subversion та його файли. Після передачі даних з іншої машини цей каталог якось опинився у власності root, коли він повинен належати мені. Видалення каталогу та надання відтворення svn його вирішило проблему (але, можливо, Chown виправив би її також).
Джо Строут

19

Довелося редагувати ~/.subversion/servers. Я встановив store-plaintext-passwords = yes(раніше не було). Це зробило трюк. Хоча це може вважатися небезпечним.


3
У цьому ж файлі мені довелося встановити store-passwords = yes. Я вважаю, що це було встановлено раніше, але я
знявся,

9

Зверніть увагу на наступний параграф із ~/.subversion/serversфайлу:

І "store-passwords", і "store-auth-creds" тепер можна вказати у файлі "серверів" у вашому каталогу конфігурації. Все, що вказано в цьому розділі, переосмислюється налаштуваннями, вказаними у файлі "серверів".

Це принаймні для версії SVN 1.6.12. Тому майте на увазі, щоб редагувати файл сервера також у міру того, як він перекриває ~/.subversion/config.


Це допомогло зрозуміти, що в тому самому файлі є переоцінка (дві декларації "зберігання паролів"!). Виправлено це і файл svn.simple був створений із властивістю gnome-keyring.
Даніельсон Алвеш Хуніор

5

Якщо ви використовуєте svn + ssh , ви можете скопіювати ваш відкритий ключ ssh на віддалену машину:

ssh-copy-id user@remotehost

5

Для мене (користувача Mac) проблема полягала в тому, що в брелоку вже був запис, збережений для моїх облікових даних, але права доступу були невірними.

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


4

Жоден із цих чудових відповідей не працював для мене на новій установці Ubuntu. Натомість, підказки з цієї відповіді зробили для мене трюк.

Я повинен був дозволити "просте" зберігання паролів, встановивши це порожнє в ~/.subversion/config:

password-stores =

Не було існуючих налаштувань, тому важливо бути порожнім.

Це було додатково до:

store-passwords = yes

в ~/.subversion/servers.


Це мені також допомогло, як здається, варіант за замовчуванням повинен працювати, але якщо прямо не вказано, це не так :(
Арунас Бартізіус

3

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

Я підтримую прийняту відповідь, але це не спрацювало для мене - з цілком конкретної причини: я хотів використати kwalletабо gnome-keyringзберігання паролів. Я спробував змінити налаштування для всіх чотирьох файлів:

/etc/subversion/config
/etc/subversion/servers
~/.subversion/config
~/.subversion/servers

Навіть після того, як усе було встановлено однаково, з password-storesіменем KWallet (за замовчуванням може бути неправильним, правда?) Воно не працювало і постійно запитували пароль. Файли в ~/.subversionдозволах 600.

Ну, в цей момент ви можете спробувати перевірити одну просту річ:

which svn

Якщо ви отримаєте:

/usr/bin/local/svn

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

Subversion - це бридкий звір для компіляції , його дуже легко випадково створити без підтримки HTTP, або - як у моєму прикладі - без підтримки зашифрованих сховищ паролів (потрібні або файли розробки Gnome, або KDE, і їх багато!). Але ./configureсценарій цього вам не скаже, і ви просто отримаєте менш функціональну svnкоманду.

У такому випадку ви можете повернутися до клієнта, який постачався разом із вашим розповсюдженням, як правило, у /usr/bin/svn. Мінус - вам, мабуть, доведеться повторно перевірити робочі копії, оскільки немає svn downgradeкоманди. Ви можете проконсультуватися з Лінусом Торвальдсом щодо того, що думати про Subversion у будь-якому випадку;)


2

Щоб додати відповідь Хіта: Схоже, що Subversion 1.6 за умовчанням зберігає паролі, якщо він не може зберігати їх у зашифрованому вигляді. Ви можете дозволити зберігання незашифрованих паролів, чітко встановивши password-stores =(тобто порожнє значення) в ~/.subversion/config.

Щоб перевірити, який підривник зберігання паролів використовує, загляньте ~/.subversion/auth/svn.simple. Він містить кілька файлів, кожна хеш-таблиця з простим кодуванням ключа / значення. svn:realmstringВ кожному файлі , який ідентифікує область , що файл для. Якщо файл є

K 8
passtype
V 6
simple

тоді він зберігає пароль у простому тексті десь у цьому файлі, у K 8 passwordзаписі. Інше, він намагається використовувати один із налаштованих password-stores.


1

Усі методи, згадані тут, для мене не працюють. Я створив Subversion з джерела, і я з’ясував, що я повинен запустити конфігурацію, --enable-plaintext-password-storageщоб підтримувати цю функцію.


1

Для того, щоб підкреслити те, що сказали Томаш Гандор і Домен про правильну версію svn і що вона була складена для того, щоб увімкнути звичайне зберігання текстового пароля, вам потрібно перевірити, що у вас є:

svn --version
svn, version 1.9.7 (r1800392)
...
WARNING: Plaintext password storage is enabled!
...

The following authentication credential caches are available:

* Plaintext cache in /gr/home/ffvdqb/.subversion
* GPG-Agent

Проти:

svn --version
svn, version 1.12.2 (r1863366)
...

The following authentication credential caches are available:

* Gnome Keyring
* GPG-Agent
* KWallet (KDE)

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


1

Я використовую TortoiseSVN клієнт на Windows, і для мене, встановивши параметр комор паролів , як та в %USERPROFILE%\AppData\Roaming\Subversion\configне допомагають зберігати пароль.

Пароль було успішно збережено після видалення цієї папки (про всяк випадок перейменування):

%USERPROFILE%\AppData\Roaming\Subversion\auth

Середовище:

Windows 7, TortoiseSVN 1.7.11 (Build 23600 - 64 bit, 2012-12-12T19:08:52), Subversion 1.7.8.

0

На жаль, відповіді не вирішили проблему запиту пароля для ssh + svn із захищеним приватним ключем. Після деяких досліджень я виявив:

ssh-add

утиліта, якщо у вас є комп'ютер Linux. Переконайтеся, що у вас зберігаються ваші ключі /home/username/.ssh/та введіть цю команду на Terminal.

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