从控制台使用 Subversion 时如何保存密码
Posted
技术标签:
【中文标题】从控制台使用 Subversion 时如何保存密码【英文标题】:How to save password when using Subversion from the console 【发布时间】:2011-02-23 08:39:34 【问题描述】:我想知道在从控制台执行svn
操作时是否可以保存我的 Subversion 密码。控制台是我唯一的选择。当我尝试执行任何 Subversion 操作时,例如svn commit
,每次都会提示输入账号密码。有没有办法以某种方式保存此密码,这样我就不必每次都重新输入?
【问题讨论】:
如果接受的答案不起作用,另请参阅can't make svn store password, even though the configuration is set to allow it 进行故障排除。 【参考方案1】:在~/.subversion/config
中,您可能有store-passwords = no
。把它改成yes
(或者把它注释掉,因为它默认是yes),下次你给Subversion你的密码时它应该保存它。
您可能希望确保 ~/.subversion/config
的所有者和权限正确(没有公共或组访问权限;600)。
【讨论】:
我在Red Hat Linux 2.6.18
中找不到此文件。知道它可能在哪里吗?
@Ish 如果它尚不存在,您可能需要制作它;我认为 SVN 在所有发行版中都存在
+1,创建文件/etc/subversion/config
后,系统按预期工作。谢谢
@IshKumar 谢谢!第一次为我工作!
@Seven 更好的是,只需写一个更新的新答案。 (根据我在config
文件中找到的一些默认cmets,config
中的store-passwords
选项现在已弃用;它已被servers
中的相同选项替换。)【参考方案2】:
这取决于您使用的协议。如果您使用的是 SVN + SSH,则 SVN 客户端无法保存您的密码,因为它从不接触它 - SSH 客户端会直接提示您输入密码。在这种情况下,您可以使用 SSH 密钥和 ssh-agent 来避免不断提示。如果您使用的是 svnserve 协议或 HTTP(S),那么 SSH 客户端正在处理您的密码并可以保存它。
【讨论】:
+1 我有这个确切的问题 - svn+ssh 总是,总是要求我输入密码。除了共享公钥之外,有没有办法避免这种情况?我试过 ssh-agent,但没有成功。 @MichaelMikowski 似乎无法将 SSH 密码保存到配置中以进行自动登录。您可以为其创建一个新的密钥对,将私钥的位置存储到.ssh/config
,将公钥附加到SVN服务器。【参考方案3】:
尝试清除主目录中的 .subversion
文件夹并尝试再次提交。它应该会提示您输入密码,然后询问您是否要保存密码。
【讨论】:
你的意思是 .subversion 文件夹! 我遇到了同样的问题。我没有在我的配置或服务器文件中将任何存储密码设置设置为“否”,但这有效。 我尝试更改各种设置均无济于事。最终解决这个问题的唯一方法确实是删除了 .subversion 文件夹。 这对我也有用。有趣的是,它为我将密码存储在 ~/.subversion/auth/svn.simple 文件夹中。 这也是为我做的,但我观察了其中的区别——结果证明是 .subversion 目录及其文件的所有权。从另一台机器传输数据后,这个目录不知何故最终归根拥有,而它应该归我所有。删除目录并让 svn 重新创建它可以解决问题(但 chown 可能也会解决它)。【参考方案4】:我不得不编辑~/.subversion/servers
。我设置了store-plaintext-passwords = yes
(以前没有)。那成功了。虽然它可能被认为是不安全的。
【讨论】:
在同一个文件中,我必须设置store-passwords = yes
。我相信它是以前设置的,但是当我更新到 SVN 1.7 时没有设置【参考方案5】:
请注意~/.subversion/servers
文件中的以下段落:
“store-passwords”和“store-auth-creds”现在都可以 在配置目录的“服务器”文件中指定。 本节中指定的任何内容都被设置覆盖 在“服务器”文件中指定。
至少适用于 SVN 版本 1.6.12。所以请记住编辑服务器文件,因为它会覆盖~/.subversion/config
。
【讨论】:
这有助于看到在同一个文件中有一个覆盖(两个“密码存储”声明!)。更正了该问题并使用 gnome-keyring 属性创建了 svn.simple 文件。【参考方案6】:在全新安装的 Ubuntu 上,这些精彩的答案都不适合我。相反,来自this 答案的线索对我有用。
我必须通过在~/.subversion/config
中将此设置为空来允许“简单”密码存储:
password-stores =
没有现有设置,因此为空很重要。
这是除了:
store-passwords = yes
在~/.subversion/servers
.
【讨论】:
这对我也有帮助,因为似乎默认选项应该可以工作,但除非明确指定,否则它不会:( 我不得不使用password-stores = gnome-keyring
,而不是一个空设置。【参考方案7】:
为了强调 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 版本启用了纯文本密码存储,然后在此处应用所有其余答案。
【讨论】:
【参考方案8】:如果您使用 svn+ssh,您可以将您的公共 ssh 密钥复制到远程机器:
ssh-copy-id user@remotehost
【讨论】:
【参考方案9】:对我(Mac 用户)来说,问题是钥匙串已经为我的凭据存储了一个条目,但访问权限不正确。
删除钥匙链应用程序中的条目,然后使用 svn 重新创建它修复了问题。
【讨论】:
【参考方案10】:如果密码曾经用作其他内容,使用纯文本可能不是最佳选择。
我支持接受的答案,但它对我不起作用 - 出于一个非常具体的原因:我想使用 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
命令。无论如何,您可以咨询Linus Torvalds 关于 Subversion 的看法;)
【讨论】:
【参考方案11】:添加到 Heath 的答案:如果 Subversion 1.6 不能以加密形式存储密码,则默认情况下它似乎禁用了存储密码。您可以通过在~/.subversion/config
中显式设置password-stores =
(即为空值)来允许存储未加密的密码。
要检查哪个密码存储颠覆使用,请查看~/.subversion/auth/svn.simple
。这包含几个文件,每个文件都有一个带有简单键/值编码的哈希表。每个文件中的svn:realmstring
标识该文件用于哪个领域。如果文件有
K 8
passtype
V 6
simple
然后它将密码以纯文本形式存储在该文件的某个位置,即K 8 password
条目中。否则,它会尝试使用已配置的password-stores
之一。
【讨论】:
【参考方案12】:这里提到的所有方法都不适合我。我从源代码构建了 Subversion,我发现,我必须使用 --enable-plaintext-password-storage
运行配置才能支持此功能。
【讨论】:
【参考方案13】:我在 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.
【讨论】:
谢谢。我尝试了一切,但没有任何效果。然后我重命名了“auth”文件夹并再次尝试。该文件夹在 auth/svn.simple/不幸的是,答案并没有解决使用受保护的私钥询问 ssh+svn 密码的问题。经过一番研究,我发现:
ssh-add
如果您有一台 Linux 计算机,则该实用程序。确保您的密钥存储在 /home/username/.ssh/
中并在终端上键入此命令。
【讨论】:
以上是关于从控制台使用 Subversion 时如何保存密码的主要内容,如果未能解决你的问题,请参考以下文章
mac JetBrains IDE(WebStromIntelliJ IDEA) svn无法保存密码,反复提示输入密码