我做了本书所说的一切,即从.subversion / auth中删除了身份验证文件,并且明确地将相关配置参数设置为'yes',即使这是默认设置,但shell SVN命令每次都要求输入密码。存储库位于cvsdude.com上,客户端是Linux。我还使用Subclipse插件来缓存密码。
我依稀记得当我开始使用它时,命令交互式询问是否要保存清除密码,我说不。这个选择可以存储在某个位置并优先于配置吗?
答案 0 :(得分:37)
使用最新版本的Subversion(~1.8),您可以通过$HOME/.subversion/servers
配置密码缓存:
[global]
store-passwords = yes
store-plaintext-passwords = yes
但根据你的系统,这可能还不够。如果不是,请确保$HOME/.subversion/config
包含:
[auth]
password-stores =
这意味着变量password-stores显式设置为空字符串(后台是svn现在包含对某些键代理工具的支持 - 并且与默认配置工具的接口可能很脆弱 - 导致无声忽略上述选项和非缓存行为)。
当第一次使用svn时,在第一次svn操作之后创建层次$HOME/.subversion
- 例如在做第一次结账时。然后Subversion创建所提到的文件并用最重要的选项填充它们 - 注释掉,包括一些文档。
因此,将旧的$HOME/.subversion
目录移开以具有明确定义的起点也是有意义的。
另一个缺陷是权限 - 即在$HOME/.subversion
下无法读取的文件 - 但这通常不是问题,因为当svn
创建它们时,它会处理正确的权限(例如auth目录只能由用户读取,而不能由group / all读取,与配置的umask无关。)
答案 1 :(得分:9)
我想提交一份详细的答案,以防将来帮助某人。
Subversion 1.6及更高版本默认会缓存您的用户名和密码,但除非您通过命令行或更改Subversion配置明确允许,否则它不会以明文缓存密码。
如果您使用--username和--password选项签出了工作副本,您将看到以下消息:
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<https://subversion.assembla.com:443> Assembla Restricted Area
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
'~/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)?
正如消息中所述,如果输入“yes”,subversion将仅保存未加密的密码。如果这样做,那么在将来执行svn命令时,您不需要添加--username或--password选项。
但是,如果您不想看到此提示,则可以通过更改本地计算机上名为“server”的配置文件来更改Subversion客户端的全局配置。它存储在这里:
~/.subversion/server
您需要将以下行添加到“服务器”文件中:
[global]
store-plaintext-passwords = yes
通过此更改,您只需使用--username和--password选项执行一次svn命令。然后Subversion会在没有上述提示的情况下自动保存您的凭据。
有关禁用以纯文本格式缓存密码的此警告的详细信息,请参阅Subversion 1.6 Security Improvements博文。
答案 2 :(得分:7)
我遇到了同样的问题,并且相信我在.subversion / servers和.subversion / config中设置了所有适当的配置,尝试删除.subversion / auth等,但无济于事。
我最终通过移动.subversion目录来保存凭据(或删除它也可以)并运行svn co。我收到以下消息:
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<http://sweeney:80> Subversion repository
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/davids/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)?
我键入是,然后得到相同的消息。固执地,我再次打字。现在我的密码似乎已保存。
有些令人惊讶的是,查看.subversion中的配置,没有任何设置被取消注释;它们都被设置为默认值,因此我想我将不得不两次回答此警告,以便在将来为其他服务器保存密码。
希望这有帮助。
答案 3 :(得分:7)
自SVN 1.12(2019年4月)以来,您基本上不能这样做。来自Release Notes:
在类似Unix的系统上,以纯文本形式在客户端上存储密码 现在默认情况下在编译时禁用磁盘。密码缓存 基于Gnome Keyring,Kwallet或GPG-Agent的机制是 推荐使用。
此更改不会影响Windows或Mac OS平台, 密码始终以加密形式存储。
所以...除非您自己编译了SVN客户端,否则您现在很可能具有的版本不允许存储纯文本密码。
顺便说一句,您以前使用的纯文本密码在Subversion升级后甚至可能会停止工作。
如果您不想在每个会话中都输入一次密码,那么使用gpg-agent
非常容易。只需以gpg-agent --daemon
开头,运行svn命令输入密码,下一个命令将不再请求该密码。
答案 4 :(得分:7)
我想我在这里找到了一个有用的提示: http://svn.haxx.se/users/archive-2013-07/0094.shtml
据我了解,客户忘记检查当前是否正在运行“gpg-agent”。
默认情况下,它将“passtype”=“gpg-agent”插入~/.subversion/auth/svn.simple/
- 缓存文件。
这是一个错误!
作为一个解决方案(并且为了避免在手工改变〜。/ subversion / auth / svn.simple /中的密码缓存文件)删除这些文件(但是制作一个保存副本)。
将该行添加到~/.subversion/config
([auth] -section):
password-stores=
(考虑:空值!这可以防止客户选择任何错误的东西并假设“简单”。)
现在,例如试试:
svn up
Subversion现在会警告您保存普通密码。
如果您没有遇到任何问题,请输入“是”,一切都很好。
之后,Subversion为特定服务器创建了一个缓存文件,您可以再次删除“密码存储”-entry。
答案 5 :(得分:5)
感谢您的评论,我发现了问题 - 这是服务器文件中的设置(不存储普通密码)。我想知道为什么配置文件的[auth]
部分存在这种冗余。在讨论存储密码时,SVN book也没有提到这一点。
答案 6 :(得分:5)
删除旧存储的密码,例如 rm~ / .subversion / auth / svn.simple / * 。我已经尝试了其他所有建议,这对我有用。
答案 7 :(得分:3)
我需要对服务器文件进行更改以使其适合我
# Password / passphrase caching parameters:
store-passwords = yes
store-plaintext-passwords = yes
答案 8 :(得分:3)
无论我做什么,都对我没有任何帮助。我检查了有关此问题的所有可能的选项,配置文件和google中的一百页。最终我放弃了,只是将其放入我的.bashrc
alias svn='svn --password <mypassword>'
答案 9 :(得分:2)
我相信我已经尝试了一切:
[global]
和[groups]
部分中都使用了我的用户名对于所有配置文件,我验证了所有部分,还输入了一个错误的参数,并验证了svn客户端停止工作(因此正在读取配置文件)。
最后,我打开了刚在〜/ .subversion / auth / svn.simple目录中创建的文件,并找到了以下内容:
K 15
svn:realmstring
V 37
<svn://home.sweet.home:3690> Profekto
K 8
username
V 6
lserni
END
因此,“ K”是键,然后是键的长度,“ V”是值,然后是值的长度。
在文件顶部,我手动添加了这八行,
K 8
passtype
V 6
simple
K 8
password
V 20
NotTheActualPassword
现在可以使用了。
答案 10 :(得分:2)
在使用slikSVN的Windows上,我遇到了同样的问题,但只有一个项目,所以我进入了%AppData%\ Roaming \ Subversion \ auth \ svn.simple并删除了包含该项目信息的文件。 / p>
我输入的下一个SVN命令要求输入密码并再次创建文件,现在它运行得很好。
也许我改变配置和服务器文件的事实也有帮助,但是在我删除该文件之前它没有工作(并且它也在使用以前的配置,直到服务器上出现密码问题并且管理员重置权限)
答案 11 :(得分:2)
即使没有X,也可以使用gnome-keyring。 你应该运行
export `gnome-keyring-daemon`
登录时和
kill $GNOME_KEYRING_PID
退出前。
然后您可以使用keyring_tool
命令行实用程序。
答案 12 :(得分:1)
请注意,svn co / up和svn log之间存储的密码存在差异!
我尝试了上面的所有提示,并且总是尝试使用'svn log'进行验证 - 无论store-plaintext-passwords是否正确设置为ask或yes,svn命令总是一次又一次地问我密码。但是当我进行新的结账或更新时,我突然有了正确的行为,我的密码得到了保存
我认为这是一个错误,因为subversion对不同的命令有不同的密码存储处理 - 至少我之前没有读过那个。
答案 13 :(得分:1)
由于某些奇怪的原因,我的.subversion文件夹不归我所有,SVN也不会保存密码证书。
我刚做了一个sudo chown -R me ~/.subversion
,现在一切正常!
答案 14 :(得分:1)
密码更改后我遇到了这样的问题并修复了它删除SVN配置(从而从头开始重新创建)。
答案 15 :(得分:1)
如果您尝试在现有工作副本上重置身份验证,我建议您在执行上述所有更改后签出新副本。当我尝试使用maven-release-plugin(使用存储的svn凭据以自动提交标签等)来发布项目时,这是唯一对我有用的东西。
答案 16 :(得分:1)
从以下目录中删除文件:
对于Windows:
例如:
C:\用户\ abcd.xyz \应用程序数据\漫游\颠覆\ AUTH \ svn.simple
<强> abcd.xyz - &GT;用户名强>
注意:删除所有文件。这些文件包含有关结帐的元数据。下次存储密码时,它将自动在此处创建文件。
从 STS / Eclipse 安装中删除.keyring
文件。停止Eclipse并删除该文件。
例如:
d:\可执行\新 STS \ STS-3.5.0-e4.3.2-Win64的\配置\ org.eclipse.core.runtime - &GT; .keyring
答案 17 :(得分:1)
根据我在之前的答案中所读到的,这些都没有奏效。我发现为我工作的可能是一系列事情或最后一步,即打开钥匙串应用程序,找到有问题的密钥。
右键单击并转到“获取信息”。点击顶部的访问控制部分。然后单击“允许所有应用程序访问此项”。虽然这可能会出乎意料。
答案 18 :(得分:0)
一个对我有用的解决方案(即使不是'更好的解决方案,至少让我失望),它是授予我的本地用户对〜/ .subversion目录和子目录的所有权限。然后我可以在没有提示用户名和密码的情况下快速进行颠覆操作。