从控制台使用Subversion时如何保存密码

时间:2010-05-24 18:17:47

标签: svn passwords

我想知道在从控制台执行svn操作时是否有办法保存我的Subversion密码。控制台是我唯一的选择。当我尝试执行任何Subversion操作时,例如svn commit,每次都会提示输入帐户密码。有没有办法以某种方式保存此密码,以便我不必每次都重新键入它?

14 个答案:

答案 0 :(得分:99)

~/.subversion/config中,您可能有store-passwords = no。将其更改为yes(或只是将其注释掉,因为它默认为“是”),并且下次向Subversion提供密码时,应将其保存。

您可能希望确保~/.subversion/config的所有者和权限正确(无公开或群组访问权限; 600)。

答案 1 :(得分:51)

这取决于您使用的协议。如果您使用的是SVN + SSH,则SVN客户端无法保存您的密码,因为它永远不会触及它 - SSH客户端会直接提示您输入密码。在这种情况下,您可以使用SSH密钥和ssh-agent来避免持续提示。如果您使用的是svnserve协议或HTTP(S),则SSH客户端正在处理您的密码并可以保存它。

答案 2 :(得分:33)

尝试清除主目录中的.subversion文件夹,然后尝试再次提交。它应该提示您输入密码,然后询问您是否要保存密码。

答案 3 :(得分:15)

我必须编辑~/.subversion/servers。我设置store-plaintext-passwords = yes(之前没有)。这就是诀窍。但它可能被认为是不安全的。

答案 4 :(得分:7)

请注意~/.subversion/servers文件中的以下段落:

  

现在可以使用'store-passwords'和'store-auth-creds'     在config目录的'servers'文件中指定。     本节中指定的任何内容都会被设置覆盖    在'servers'文件中指定。

至少对于SVN版本1.6.12。因此,请记住编辑服务器文件,因为它会覆盖~/.subversion/config

答案 5 :(得分:6)

如果您使用 svn + ssh ,则可以将公共ssh密钥复制到远程计算机:

ssh-copy-id user@remotehost

答案 6 :(得分:4)

对我来说(Mac用户)问题是钥匙串已经为我的凭据存储了一个条目,但是访问权限不对。

删除密钥链应用中的条目,然后使用svn重新创建该条目修复了该问题。

答案 7 :(得分:3)

如果密码被用作别的东西,使用明文可能不是最好的选择。

我支持已接受的答案,但它并不适用于我 - 原因非常具体:我想使用kwalletgnome-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命令。无论如何,您可以参考Linus Torvalds了解Subversion的内容;)

答案 8 :(得分:3)

仅需强调Tomasz Gandor和Domain关于拥有正确版本的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版本已启用纯文本密码存储,然后在此处应用所有其余答案。

答案 9 :(得分:2)

要添加到希思的答案中:如果Subversion 1.6无法以加密形式存储密码,则默认情况下它已禁用存储密码。通过在// THIS IS JUST A SIMPLIFIED EXAMPLE. let date = new Date(01/01/2019 00:00:00) let finalDate = new Date() finalDate.setDate(date.getDate() + 10) console.log(finalDate) 中显式设置Desired output: 11/01/2019 00:00:00 Actual output: 31/08/2019 13:06:30 (即为空值),可以允许存储未加密的密码。

要检查使用哪个密码存储库版本,请查看password-stores =。它包含几个文件,每个文件都有一个简单的键/值编码的哈希表。每个文件中的~/.subversion/config标识该文件用于哪个领域。如果文件有

~/.subversion/auth/svn.simple

然后将密码以纯文本格式存储在该文件中svn:realmstring条目中的某个位置。否则,它将尝试使用已配置的K 8 passtype V 6 simple 之一。

答案 10 :(得分:1)

不幸的是,答案并没有解决使用受保护的私钥为ssh + svn索取密码的问题。经过一些研究后我发现:

ssh-add

实用程序,如果您有Linux计算机。确保将密钥存储在/home/username/.ssh/中,并在终端上输入此命令。

答案 11 :(得分:1)

这些绝妙的答案中没有一个对我而言是全新安装的Ubuntu。取而代之的是,this答案中的一条线索对我有用。

我必须通过在~/.subversion/config中将其设置为空来允许“简单”密码存储:

password-stores =

没有现有设置,因此为空很重要。

这是对以下内容的补充:

store-passwords = yes

~/.subversion/servers中。

答案 12 :(得分:1)

这里提到的所有方法都不适合我。我从源代码构建了Subversion,但发现必须使用--enable-plaintext-password-storage运行configure才能支持此功能。

答案 13 :(得分:0)

我正在Windows上使用TortoiseSVN客户端,并且在%USERPROFILE%\ AppData \ Roaming \ Subversion \ config中将store-passwords参数设置为yes无法存储密码。

删除此文件夹后密码已成功保存(以防重命名):

%USERPROFILE%\AppData\Roaming\Subversion\auth

环境:

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