在 Windows 上,使用 Tortoise SVN 通过 SSH 无法运行 SVN

在 Windows 上,使用 Tortoise SVN 通过 SSH 无法运行 SVN

svnadmin我可以通过 SSH 访问已安装(以及其余必要的实用程序)的FreeBSD 计算机。svn 是版本 1.7.9(r1462340)。我在 Windows 7 x64 上使用 Tortoise SVN 1.7.7。

我已经关注本官方指南帮助我设置我的服务器和 Tortoise SVN,但我在设置时遇到了麻烦。

我已生成一对私钥/公钥,并~/.ssh/authorized_keys分别将它们添加到我的服务器文件和我的 Putty 配置中。我可以使用 Putty 和我的私钥连接到远程机器。

我也尝试配置 Tortoise SVN 来做同样的事情,并且我正在连接到:

svn+ssh://myBSDusername@it2svn/somerepo

it2svn名字在哪里在职的Putty 连接配置文件,并且somerepo是我的存储库根目录中的一个存储库(~/svnroot/somerepo)。

发生的问题Tortoise SVN 要求输入我的密钥的密码,并且无论我正确输入多少次,密码对话框都会关闭 1-2 秒,然后再次提示我输入密码。它甚至没有说它是错的,它只是一遍又一遍地询问我密码。

如果我故意输入错误的密码,系统会再次提示我输入密码即刻,输入正确密码时不会出现 1-2 秒的延迟。即使我输入的是乱码,对话框仍然不会提示错误。这可能是他们那边的一个错误,但它仍然无法解释为什么我的正确密码不被接受。

配置

以下是文件的内容authorized_keys(已删除密钥的实际内容):

ssh-dss AAA....FuA== myBSDusername@ems

command="svnserve -t -r ~/svnroot --tunnel-user=svnAuthorDude",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAA....IFuA== myBSDusername@ems

重要的提示:指南说我的“命令”行应该是这样的:

command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
     no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
     no-pty ssh-rsa <PublicKey> <Comment>

ssh-keygen但是我使用与指南中相同的参数生成的密钥以ssh-dss而不是开头ssh-rsa,这就是为什么ssh-rsa在我的文件中被 替换为dss(显然是因为该密钥是 DSA 而不是 RSA 密钥)。

答案1

您遇到的问题是在您的密钥对上使用密码而不是使用 pageant。

当 TortoiseSVn 连接 SSH 隧道时,它似乎使用 plink(或 TortoisePLink)发出多个单独的请求。每次发生这种情况时都需要 SSH 密钥,因此需要解锁,然后才会发生密码请求。

如果您没有使用密码保护密钥对,则无需询问密码。

如果您在使用 TortoiseSVN 之前将 pageant 配置为加载密钥,则 plink 将从 pageant 获取已解锁和缓存的密钥。这样,您可以使用受密码保护的密钥,而不必重复输入密码。不过,在将密钥添加到 pageant 时,您仍然需要输入一次密码。

答案2

我使用 PuttyGen 重新生成了密钥对,并将其设为 RSA2 密钥对(而不是旧的 DSA 密钥)。我还跳过了使用密码保护私钥的步骤,现在一切都(神奇地)正常工作了。我不知道具体是哪些更改真正解决了这个问题,但我希望这能帮助未来遇到类似问题的开发人员。

以下是我的用户的(相关)内容~/.ssh/authorized_keys

ssh-rsa AAAA...Wc= rsa-key-20130529

command="svnserve -t -r /user/rest/of/path/svnroot --tunnel-user=someuser",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...Wc= andrei

相关内容