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

joh*_*ald 100 svn passwords

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

Mic*_*zek 103

~/.subversion/config,你可能有store-passwords = no.将其更改为yes(或只是将其注释掉,因为它默认为yes),下次你给Subversion你的密码时应该保存它.

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

  • @Seven更好的是,只需写一个更新的答案.(`config`中的`store-passwords`选项现在已被弃用,根据我在`config`文件中找到的一些默认注释;它已被`servers`中的相同选项所取代.) (13认同)
  • +1,创建文件`/ etc/subversion/config`系统按预期工作.谢谢 (4认同)
  • @Ish 如果它不存在,您可能需要制作它;我认为 SVN 在所有发行版中看起来都有 (3认同)

And*_*ico 54

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

  • +1我有这个确切的问题 - svn + ssh总是,总是要我输入密码.在共享公钥之外,有没有办法避免这种情况?我试过ssh-agent,但没有运气. (3认同)
  • 确实这个问题http://stackoverflow.com/a/26120027/620039有帮助 (2认同)

Ear*_*rlz 33

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

  • 我有同样的问题.我的配置或服务器文件中没有任何商店密码设置设置为"no",但这有效. (3认同)

Igo*_*gor 25

从版本 1.12 开始,svn 中故意禁用保存明文密码。没有配置密钥可以重新启用此功能。让 Subversion 将密码保存为纯文本的唯一方法是在编译时启用它。

但是,Subversion 仍然能够读取明文密码。
还有一个官方脚本可以手动将您的密码保存为纯文本。

  1. ~/.subversion/config考虑删除和中的任何编辑~/.subversion/servers。如果有疑问,只需删除这两个文件即可。
  2. 至少使用你的 svn 服务器一次(例如签出一些东西)。
    如果询问,请验证并永久接受服务器服务器证书指纹。
    这将生成~/.subversion/auth/svn.simple/xxxxx文件(其中“xxxxx”是一些哈希值),但其中还没有密码。
  3. 运行svn auth并记
    Authentication realm: <https://myserver.mydomain:12345> VisualSVN Server下输出中的字符串。
  4. 使用官方解决方法脚本将您的密码存储为明文:
wget https://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/store-plaintext-password.py
chmod +x store-plaintext-password.py
./store-plaintext-password.py -u your_username "<https://myserver.mydomain:12345> VisualSVN Server"
Run Code Online (Sandbox Code Playgroud)
  1. 仔细检查~/.subversion/auth/svn.simple/xxxxx现在确实包含您的密码
  2. chmod 700 ~/.subversion/auth/svn.simple/xxxxx
  3. chmod 700 ~/.subversion/auth/svn.simple
  4. 再次尝试使用您的 svn 服务器(例如svn update)。

刚刚在 svn 版本 1.14.1 (r1886195) 上进行了测试,apt install subversion在 Ubuntu 22 上使用简单安装。


haj*_*mie 17

我不得不编辑~/.subversion/servers.我订store-plaintext-passwords = yes(以前没有).这就是诀窍.但它可能被认为是不安全的.

  • 在同一个文件中,我不得不设置`store-passwords = yes`.我相信它之前设置过,但是当我更新到SVN 1.7时却没有设置 (2认同)

小智 7

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

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

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


Jim*_*Jim 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
Run Code Online (Sandbox Code Playgroud)

相对:

svn --version
svn, version 1.12.2 (r1863366)
...

The following authentication credential caches are available:

* Gnome Keyring
* GPG-Agent
* KWallet (KDE)
Run Code Online (Sandbox Code Playgroud)

一旦您看到您的 svn 版本已启用纯文本密码存储,请在此处应用所有其余答案。


Mic*_*mid 6

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

ssh-copy-id user@remotehost
Run Code Online (Sandbox Code Playgroud)


Hea*_*ery 6

在全新安装的 Ubuntu 上,这些精彩的答案都没有对我有用。相反,这个答案中的一条线索对我有用。

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

password-stores =
Run Code Online (Sandbox Code Playgroud)

没有现有的设置,所以空是很重要的。

除此之外:

store-passwords = yes
Run Code Online (Sandbox Code Playgroud)

~/.subversion/servers


tri*_*ias 5

对于我(Mac用户)而言,问题在于,钥匙串已经存储了用于我的凭据的条目,但是访问权限不正确。

删除钥匙串应用程序中的条目,然后使用svn重新创建该条目即可解决此问题。