将保存的 TortoiseSVN 身份验证移动到另一台机器?

Posted

技术标签:

【中文标题】将保存的 TortoiseSVN 身份验证移动到另一台机器?【英文标题】:Move saved TortoiseSVN authentication to another machine? 【发布时间】:2011-04-12 20:11:15 【问题描述】:

有没有办法将已保存的 TortoiseSVN 登录名/密码从机器移动到网络存储库?刚买了一台新机器,知道我的用户名,但不记得我登录到存储库。

我知道 TortoiseSVN 在 %appdata%\Subversion\auth 的目录中保存了一些身份验证信息

移动了我在 svn.simple 找到的文件;我在其中以明文形式看到我的用户名,但密码已加密。我还在文件中看到“wincrypt”,这就是调用的加密功能。

通常我只会让 SVN 管理员为我重置它,但他和 SVN 的其他管理员一样要休假到下周。

我可以深入研究 TortoiseSVN 的源代码,看看身份验证是如何完成的,但必须有一种更简单的方法。如果有用的话,我可以在旧机器上成功验证后运行 Wireshark。

【问题讨论】:

认为身份验证是使用用户的 Windows 登录凭据加密的,这使您想要的成为不可能。 如果您知道使用哪种加密方法以及在哪里可以找到密钥,则有多种方法可以解密身份验证;例如,有一个使用 Windows 数据保护 API (dpapick.com) 进行解密的工具 【参考方案1】:

看到这个答案:Extract TortoiseSVN saved password

如果您仍然可以访问旧机器和 Windows 用户帐户,则可以使用第 3 方“TortoiseSVN 密码解密器”实用程序提取密码。

Wireshark 是另一个不错的选择,但我认为它不会对 SSL 存储库有所帮助。

【讨论】:

【参考方案2】:

根据the help file,TortoiseSVN 将凭据存储在%appdata%\Subversion\auth 的子文件夹中:

svn.simple 包含基本身份验证的凭据(用户名/密码)。 svn.ssl.server 包含 SSL 服务器证书。 svn.username 包含仅用户名身份验证的凭据(不需要密码)。

我想你可以尝试将这些文件夹复制到另一台机器上。

【讨论】:

是的,我已经尝试过了,但没有成功。还从 3 个位置(2 HKCU + 1 HKLM)复制了注册表项;整个 %programfiles%\TortoiseSVN 文件夹和 2 个 %appdata% 文件夹(Subversion 和 TortoiseSVN)。仍然提示输入密码。【参考方案3】:

解决了!原来解决起来很简单。

Wireshark 就是答案。捕获了我的旧机器和存储库主机之间的通信,从 TortoiseSVN 启动了存储库浏览器。然后我在对话中运行“Follow TCP Stream”,发现这一行:

授权:基本 ZHIzeDppc0F3ZXNvbWU=

这是解码它的 Powershell 脚本: $basic = "ZHIzeDppc0F3ZXNvbWU=" [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($basic))

返回纯文本: 姓名:密码

【讨论】:

【参考方案4】:

在 TortoiseSVN 1.9 及更高版本中,无需任何额外工具即可完成:

设置对话框 -> 保存的数据,然后单击文本“身份验证数据”右侧的“清除...”按钮。将弹出一个新对话框,显示所有存储的身份验证数据,您可以在其中选择要清除的数据。不要清除,而是按住 Shift 和 Ctrl 按钮,然后双击列表。对话框中会显示一个新列,以明文形式显示密码。

【讨论】:

您甚至无法想象我有多么需要这个,而您的最后一个电话回答让我很开心!它完美地工作!非常感谢! 不用担心 :) 我为自己和其他人都写下了它。【参考方案5】:

使用来自登录用户的数据,使用 Windows 加密 API 对凭据进行加密。这意味着加密基于您的 Windows 登录帐户,因此无法复制到另一台计算机,即使您在那里设置了具有相同用户名和密码的用户。

【讨论】:

您知道哪些信息用于加密凭证吗? DPAPICK 无法使用旧机器的主密钥;可能是另一种加密方法。 CryptProtectData(),见svn源码:svn.apache.org/repos/asf/subversion/trunk/subversion/…【参考方案6】:

我认为您会希望这个成为可能,因为这意味着任何人都可以复制某些文件并能够使用您的 SVN 帐户进行更改。或许最好不要这样做,这样事情会更安全。

相反,您应该在内部制定更好的密码管理政策,这样您就不必依赖周围的某些人来处理此类事情(即bus factor)。

【讨论】:

以上是关于将保存的 TortoiseSVN 身份验证移动到另一台机器?的主要内容,如果未能解决你的问题,请参考以下文章

我有登录页面如何使用 coredata 数据库对用户进行身份验证?

如何在不将密码保存在数据库中的情况下验证用户身份

你如何移动文件?

将 android 项目从 pc 移动到另一个,Firebase Auth 问题? [复制]

将身份验证从一个 Google Apps Script webapp 传递到另一个 Google Apps Script webapp

在 ASP.NET Core 中,是不是可以通过将身份验证转发到另一个方案来在一个方案中抢先创建新用户?