如何在服务器上缓存 Subversion 密码,而不以未加密的形式存储它?

Zil*_*ilk 5 encryption password svn cache

我的 Subversion 服务器仅提供通过 HTTPS 的访问;对 svn+ssh 的支持已被删除,因为我们希望避免仅仅为了 SVN 访问而在该计算机上创建系统用户。现在我试图为用户提供一种方法来缓存他们的密码一段时间,而不会将它们以未加密的形式存储在文件系统上。

这对于 Gnome 或 KDE 用户来说没有问题,因为他们可以分别使用 gnome-keyring 和 kwallet。IIRC、TortoiseSVN也有类似的缓存机制。但是非 GUI 系统上的用户又如何呢?

一些上下文:在本例中,我们有一台开发/测试服务器,其中一个项目已检出到 Apache htdocs 目录中。该项目的开发已基本完成,仅在此服务器上直接执行少量文本/布局更改。尽管如此,更改应该签入存储库。该系统上没有 kwallet 和 gnome-keyring,并且 ssh-agent 也无能为力,因为存储库是通过 https 而不是 svn+ssh 访问的。

据我所知,这让他们可以选择在每次与 SVN 服务器通信时输入密码,或者以不安全的方式存储密码。

有什么方法可以在非 GUI 环境中获得类似 gnome-keyring 和 kwallet 提供的东西吗?

dev*_*ull 2

你不能。

HTTPS 不支持任何类型的单向密码哈希。在此过程中的某个时刻,您需要可用的纯文本密码。到目前为止,可能可以对其进行加密,但是考虑到您还需要服务器上的解密密钥,因此没有什么意义。

即使 HTTPS 支持单向密码散列,您也无法执行此操作(需要针对重放攻击采取一些保护措施,否则您的密码散列将成为密码!)

这不是一个真正的解决方案,但切换到分布式的东西,比如 Git,可以很好地解决这个问题。您可以让用户配置 SSH 代理转发到他们要连接的计算机,并且身份验证将基于此。