SVN не будет кэшировать учетные данные

Я использую команду svn clientline (версия 1.6.12, из репозитория Ubuntu), и я не могу заставить ее кэшировать мои учетные данные пользователя. Я пытаюсь получить доступ к репозиторию https svn (что-то вроде https://subversion.FAKE.com/PROJECT). Мое имя пользователя для этого репо отличается от моего локального имени пользователя.

Здесь раздел auth ~/.subversion/config

[auth]
### Set password stores used by Subversion. They should be
### delimited by spaces or commas. The order of values determines
### the order in which password stores are used.
### Valid password stores:
###   gnome-keyring        (Unix-like systems)
###   kwallet              (Unix-like systems)
###   keychain             (Mac OS X)
###   windows-cryptoapi    (Windows)
# password-stores = gnome-keyring
### 
### The rest of this section in this file has been deprecated.
### Both 'store-passwords' and 'store-auth-creds' can now be
### specified in the 'servers' file in your config directory.
### Anything specified in this section is overridden by settings
### specified in the 'servers' file.
### 
### Set store-passwords to 'no' to avoid storing passwords in the 
### auth/ area of your config directory.  It defaults to 'yes',
### but Subversion will never save your password to disk in
### plaintext unless you tell it to (see the 'servers' file).
### Note that this option only prevents saving of *new* passwords;
### it doesn't invalidate existing passwords.  (To do that, remove
### the cache files by hand as described in the Subversion book.)
store-passwords = yes 
### Set store-auth-creds to 'no' to avoid storing any subversion
### credentials in the auth/ area of your config directory.
### It defaults to 'yes'.  Note that this option only prevents
### saving of *new* credentials;  it doesn't invalidate existing
### caches.  (To do that, remove the cache files by hand.)
store-auth-creds = yes 

И здесь глобальный раздел ~/.subversion/servers

[global]
# http-proxy-exceptions = *.exception.com, www.internal-site.org
# http-proxy-host = defaultproxy.whatever.com
# http-proxy-port = 7000
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
# http-compression = no
# http-auth-types = basic;digest;negotiate
# No http-timeout, so just use the builtin default.
# No neon-debug-mask, so neon debugging is disabled.
# ssl-authority-files = /path/to/CAcert.pem;/path/to/CAcert2.pem
#
# Password / passphrase caching parameters:
store-passwords = yes
store-plaintext-passwords = no
store-auth-creds = yes
# store-ssl-client-cert-pp = no
# store-ssl-client-cert-pp-plaintext = no

Единственные изменения, которые я сделал, - это явно установить несколько параметров, связанных с хранением паролей. Я попытался установить пароль-магазины = gnome-keyring без эффекта. Кроме того, я удалил ~/.subversion/auth (как и некоторые другие потоки) и до сих пор не воссоздан клиентом svn.

Любые предложения? Как я могу заставить SVN хранить мои учетные данные (либо в ~/.subversion/auth, либо с помощью gnome-keyring, мне все равно).

Ответ 1

У вас есть как минимум три варианта

Чтобы сохранить пароль в открытом тексте, сначала удалите каталог ~/.subversion. Это приведет к удалению любых ранее настроенных элементов, таких как сертификаты сервера, которые вы уже приняли, и любые ранее кэшированные пароли. В следующий раз, когда будет запущен svn, он воссоздает "пустую" структуру каталогов. Затем запустите команду svn против вашего репозитория. Вы должны увидеть что-то похожее на следующее:

$> cd <project directory>
$> svn update
Error validating server certificate for 'https://...':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: ...
 - Valid: ...
 - Issuer: ...
 - Fingerprint: ...
(R)eject, accept (t)emporarily or accept (p)ermanently? p
Password for 'your username': secret
-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

  <https://...> ...

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/.../.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes

Внимание!!! Это сохранит ваш пароль в виде открытого текста (довольно небезопасного), но он также будет кэшировать ваш пароль, поэтому вам не нужно вводить его каждый раз. В конечном счете пароль хранится в открытом тексте в ~/.subversion/auth/svn.simple/.

Ответ 2

Если все указанные опции установлены правильно, возможно, клиент svn не сможет записать файл учетных данных из-за разрешений. Я обнаружил, что этот поток испытывает одно и то же поведение, а разрешения - это исправление.

Ответ 3

Конфигурационные файлы для subversion существуют в пользовательской области (ваш домашний каталог ~/.subversion) и в системной области (/etc/subversion), см. http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.1. Если вы можете копировать файлы "config" и "servers" из системных файлов или редактировать их напрямую, если у вас есть разрешения администратора.

Простейшим, но небезопасным решением является предоставление учетных данных кэша subversion в обычном файле. Для этого просто установите store-passwords = yes и оставьте все остальные настройки по умолчанию (прокомментированные).

Сохранение паролей с помощью gnome-keyring может не работать, потому что инструмент не установлен или gnome-keyring-daemon, вероятно, не работает.

Ответ 4

Не уверен, что вы все еще ищете ответ здесь; но вариант "ssl-client-cert-password", вероятно, тот, который вы ищете.

ssl-client-cert-password=<password>

Ответ 5

Не знаю, было ли это решение еще, но вы пробовали добавить

password-stores = 

в файл 'config'?

Ответ 6

В вашей конфигурации есть опция store-plaintext-passwords = no, которая запрещает хранить пароль в $HOME/.subversion, если только не поддерживается какое-либо поддерживаемое шифрование.

Чтобы вернуться к поведению до 1.6, вы можете изменить значение на yes, что позволяет сохранить пароль.