Как сохранить пароль при использовании Subversion из консоли


107

Мне было интересно, есть ли способ сохранить мой пароль Subversion при выполнении svnопераций с консоли. Консоль - единственный вариант, который у меня есть. Когда я пытаюсь выполнить какое-либо действие Subversion, например svn commit, он каждый раз запрашивает пароль учетной записи. Есть ли способ как-то сохранить этот пароль, чтобы мне не приходилось каждый раз вводить его заново?


См. Также невозможно создать пароль хранилища svn, даже если конфигурация настроена так, чтобы разрешить устранение неполадок в случае, если принятый ответ не работает.
maxschlepzig 01

Ответы:


110

В ~/.subversion/config, вероятно, есть store-passwords = no. Измените его на yes(или просто закомментируйте, потому что по умолчанию это да), и в следующий раз, когда вы дадите Subversion свой пароль, он должен его сохранить.

Возможно, вы захотите убедиться, что владелец и права доступа ~/.subversion/configуказаны правильно (нет публичного или группового доступа; 600).


Я не могу найти этот файл в папке Red Hat Linux 2.6.18. есть идеи, где это могло быть?
Ish

3
@Ish Возможно, вам придется сделать это, если он еще не существует; Я думаю, что SVN будет присутствовать во всех дистрибутивах,
Майкл Мрозек

5
+1, после создания файловая /etc/subversion/configсистема работает как положено. Спасибо
Ish

@IshKumar Спасибо! Получилось у меня впервые!
Анил

15
@Seven Еще лучше, просто напишите новый ответ, который будет актуальнее. ( store-passwordsОпция в configтеперь устарела, согласно некоторым комментариям по умолчанию, которые я нашел в моем configфайле; она была заменена такой же опцией в servers.)
Кайл Стрэнд

54

Это зависит от используемого вами протокола. Если вы используете SVN + SSH, клиент SVN не может сохранить ваш пароль, потому что он никогда не касается его - клиент SSH запрашивает его напрямую. В этом случае вы можете использовать SSH-ключ и ssh-agent, чтобы избежать постоянных запросов. Если вы используете протокол svnserve или HTTP (S), то клиент SSH обрабатывает ваш пароль и может его сохранить.


4
+1 У меня именно такая проблема - svn + ssh всегда, всегда спрашивает пароль. Есть ли способ избежать этого, помимо обмена открытым ключом? Я пробовал ssh-agent, но безуспешно.
Майкл Миковски,

@MichaelMikowski Кажется, пароль SSH не может быть сохранен в конфигурации для автоматического входа в систему. Вы можете создать для него новую пару ключей, сохранить местоположение закрытого ключа .ssh/config, добавить открытый ключ на сервер SVN.
lk_vc 08

33

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


Вы имеете в виду папку .subversion!
khmarbaise

3
У меня такая же проблема. У меня не было ни одной из настроек пароля магазина, установленной на «нет» в моей конфигурации или файле серверов, но это сработало.
Bob B

1
Я безуспешно пытался изменить всевозможные настройки. Единственное, что в конечном итоге решило эту проблему, - это действительно удалить папку .subversion.
Майкл Нойб

Это сработало и для меня. Интересно, что он хранил пароль внутри папки ~ / .subversion / auth / svn.simple для меня.
Четан

Это тоже помогло мне, но я наблюдал, чтобы увидеть, в чем разница - и оказалось, что это право собственности на каталог .subversion и его файлы. После переноса данных с другой машины этот каталог каким-то образом оказался владельцем root, тогда как он должен был принадлежать мне. Удаление каталога и разрешение svn воссоздать его устранило проблему (но, вероятно, chown также исправил бы ее).
Джо Страут

19

Пришлось редактировать ~/.subversion/servers. Ставил store-plaintext-passwords = yes(раньше не было). Это сработало. Однако это можно было бы считать небезопасным.


3
В этом же файле мне пришлось установить store-passwords = yes. Я считаю, что он был установлен раньше, но сбился, когда я обновился до SVN 1.7
pieman72

9

Обратите внимание на следующий абзац из ~/.subversion/serversфайла:

И 'store-passwords', и 'store-auth-creds' теперь можно указать в файле 'servers' в вашем каталоге конфигурации. Все, что указано в этом разделе, отменяется настройками, указанными в файле «серверы».

По крайней мере, для SVN версии 1.6.12. Так что не забывайте редактировать файл серверов, так как он отменяет ~/.subversion/config.


Это помогло увидеть, что в одном и том же файле произошло переопределение (два объявления "хранилища паролей"!). Исправлено, и файл svn.simple был создан со свойством gnome-keyring.
Danielson Alves Júnior,

5

Если вы используете svn + ssh , вы можете скопировать свой открытый ключ ssh на удаленный компьютер:

ssh-copy-id user@remotehost

5

Для меня (пользователя Mac) проблема заключалась в том, что в цепочке для ключей уже была сохранена запись для моих учетных данных, но права доступа были неправильными.

Удаление записи в приложении цепочки ключей и последующее ее воссоздание с помощью svn устранило проблему.


5

Ни один из этих замечательных ответов не помог мне при новой установке 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, загляните в ~/.subversion/auth/svn.simple. Он содержит несколько файлов, каждый из которых представляет собой хеш-таблицу с простой кодировкой ключ / значение. Символ svn:realmstringв каждом файле указывает, для какой области предназначен этот файл. Если в файле есть

K 8
passtype
V 6
simple

затем он сохраняет пароль в виде обычного текста где-нибудь в этом файле в K 8 passwordзаписи. В противном случае он пытается использовать один из настроенных password-stores.


1

Все упомянутые здесь методы у меня не работают. Я создал Subversion из исходного кода и обнаружил, что --enable-plaintext-password-storageдля поддержки этой функции мне нужно запустить configure с .


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/и введите эту команду в Терминале.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.