UNIX 上的 SVN 命令行客户端,将密码保存在 ~/.subversion 文件夹中。第一次,客户端询问是否需要(p)永久保存密码。这也可以在 /.subversion/servers 中配置
store-passwords = no
我们有一些常见的登录名,不希望永久保存密码。但是,为每个 SVN 命令输入密码是一件很痛苦的事情。有没有办法只为注销时清除的会话保存密码?
UNIX 上的 SVN 命令行客户端,将密码保存在 ~/.subversion 文件夹中。第一次,客户端询问是否需要(p)永久保存密码。这也可以在 /.subversion/servers 中配置
store-passwords = no
我们有一些常见的登录名,不希望永久保存密码。但是,为每个 SVN 命令输入密码是一件很痛苦的事情。有没有办法只为注销时清除的会话保存密码?
如果您使用基于 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 来运行脚本,您的脚本可能会失败,并且您将密码写入未加密的磁盘。