我可以通过SSH访问安装了svnadmin (以及其他必要工具)的FreeBSD机器。 svn是版本1.7.9(r1462340)。 我在Windows 7 x64上,使用Tortoise SVN 1.7.7。
我遵循这个官方指南来帮助我build立我的服务器和龟SVN,但我有麻烦设置它。
我已经生成了一对私钥/公钥,并将它们分别添加到我的服务器的~/.ssh/authorized_keys文件和我的Puttyconfiguration中。 我可以使用腻子和我的私钥连接到远程机器。
我也尝试configuration龟SVN做同样的事情,我连接到:
svn+ssh://myBSDusername@it2svn/somerepo
其中it2svn是正在运行的 Putty连接configuration文件的名称, somerepo是我的存储库根目录( ~/svnroot/somerepo )中的存储库。
发生的问题是,龟SVN请求我的密钥的密码短语,无论我正确地input了多less次,密码对话框closures了1-2秒,之后它再次提示我的密码短语。 它甚至不说这是错误的 ,它只是不停地问我一遍又一遍的密码。
如果我故意input了错误的密码,我会立即再次提示input密码,而input正确密码时不会出现1-2秒的延迟。 即使我input了乱码,对话仍然没有说错。 这可能是一个错误,但它仍然不能解释为什么我的正确密码不被接受。
下面是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密钥)。
我使用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