将保存的 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