仅为会话保存SVN身份验证信息

时间:2013-02-25 09:37:32

标签: svn

UNIX上的SVN命令行客户端,将密码保存在〜/ .subversion文件夹中。第一次,客户端询问是否需要永久保存密码(p)。这也可以在/.subversion/servers

中配置
store-passwords = no

我们有一些常见的登录信息,不希望永久保存密码。但是,为每个SVN命令输入密码是一件痛苦的事。有没有办法只为注销时清除的会话保存密码?

1 个答案:

答案 0 :(得分:0)

如果您使用的是基于SSH的Subversion连接,则可以使用带密码加密的私钥和ssh-agent进行公钥身份验证,并在会话开始时解锁密钥。由于ssh-agent将密钥保存在内存中,因此当密钥退出时,该密钥将不再可用。

$ ssh-agent /bin/bash

现在启动一个子shell,您可以解锁密钥并使用Subversion:

$ ssh-add ~/.ssh/id_rsa_svn
$ svn co svn+ssh://svn.example.com/svn/code

完成后,退出子shell:

$ exit

代理现在不再运行,因此您的密钥不再可用。

$

(请注意,某些桌面环境提供了自己的SSH代理实现,这些可能会使“退出”清除密钥的假设变得混乱 - 但是,这些通常也会在您登录时解锁密钥环,因此您的安全应该是等效的。)

我不知道使用基于密码的身份验证的方法。我想你可以看看你的Unix的特殊风格是否支持.logout文件或类似文件,并尝试编写从Subversion的密码存储中删除密码的脚本。但是,此解决方案有几个缺点:您依赖shell来运行脚本,您的脚本可能会失败,并且您将密码写入未加密的磁盘。