Как сохранить пароль при использовании 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папку в домашнем каталоге и повторите попытку. Он должен запросить ваш пароль, а затем спросить, хотите ли вы сохранить пароль.

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

www
источник