【问题标题】:SVN+SSH checkout over VPN using tortoise SVN, Smartsvn failingSVN + SSH使用乌龟SVN通过VPN结帐,Smartsvn失败
【发布时间】:2011-09-13 17:12:44
【问题描述】:

系统和连接详情

我使用的是运行 Windows 7 的 64 位系统。我安装了 Open VPN 和 Tortoise SVN 64 位。

存储库位于远程系统中,我们使用 VPN 连接。

到目前为止我做了什么

我已按照必要的步骤启动 VPN 连接 -

  • 在 Open VPN 安装路径的 config 文件夹中添加了一些项目特定的配置文件。从团队成员的工作设置中获取这些文件。
  • 使用用户启动 Open VPN 连接。
  • 运行 Putty 的 Pageant.exe,选择 .ppk 文件并输入密码。

到目前为止一切都很好。

然后我转到本地目录并尝试使用 Tortoise SVN 签出远程存储库 URL。但它会引发以下错误 -

结帐失败

To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
Network connection closed unexpectedly

以下是我的 Subversion 配置文件的 [tunnels] 部分的内容 -

### Section for configuring tunnel agents.
[tunnels]
### Configure svn protocol tunnel schemes here.  By default, only
### the 'ssh' scheme is defined.  You can define other schemes to
### be used with 'svn+scheme://hostname/path' URLs.  A scheme
### definition is simply a command, optionally prefixed by an
### environment variable name which can override the command if it
### is defined.  The command (or environment variable) may contain
### arguments, using standard shell quoting for arguments with
### spaces.  The command will be invoked as:
###   <command> <hostname> svnserve -t
### (If the URL includes a username, then the hostname will be
### passed to the tunnel agent as <user>@<hostname>.)  If the
### built-in ssh scheme were not predefined, it could be defined
### as:
# ssh = $SVN_SSH ssh
### If you wanted to define a new 'rsh' scheme, to be used with
### 'svn+rsh:' URLs, you could do so as follows:
# rsh = rsh
### Or, if you wanted to specify a full path and arguments:
# rsh = /path/to/rsh -l myusername
### On Windows, if you are specifying a full path to a command,
### use a forward slash (/) or a paired backslash (\\) as the
### path separator.  A single backslash will be treated as an
### escape for the following character.

这是错误中提到的部分吗? 我在那里看不到任何-q 选项。现在应该怎么做。

注意 - 我也在超级用户上发布了同样的问题 - https://superuser.com/q/295439/50101。我在那里没有得到任何答案。让我知道是否应该删除/关闭。

更新
我尝试使用 Smartsvn 6。 当 Openvpn gui 正在运行并且 putty 选美正在运行时,我选择了“公钥/私钥身份验证”,选择了 .ppk 文件并输入了密码短语。 我收到此错误 -

An error occurred while processing an SVN command 
File '\path\to\key-file.ppk' is not a valid OpenSSH DSA or RSA private key file.

有什么想法吗?为什么会出现这个错误?这怎么可能解决或任何指针?队友有一个运行 Windows xp 的 32 位系统,他们能够结帐。而我和另一个新成员有一个运行 Windows 7 的 64 位系统,面临同样的问题。

更多详情
用于结帐的存储库 URL 类似于 svn+ssh://@...com/var/svn/reposito‌​ries//

队友再也没有生成任何其他密钥或任何东西。他们只是将一些文件放入他们打开的 VPN 配置文件夹(一些 .ppk、.key、.crt 和一些打开的 vpn 配置文件)。

更新 3
使用 puttygen 生成 RSA/DSA 密钥时,“要生成的密钥类型”下有 3 个选项 -> 1.SSH-1(RSA) 2.SSH-2 RSA 3.SSH-2 DSA。我选择了SSH-1(RSA)。点击保存私钥。然后再次按照相同的步骤进行结帐。我还选择了Tortoise SVN-> settings-> Network -> SSH Client -> 在那里浏览了pageant.exe 文件。结帐仍然不成功->提示“无法加载此密钥(无法打开文件)”,然后同样的错误-

To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
Network connection closed unexpectedly

更新 4
一位新队友(与我一样在一个系统上工作,64 位运行 Windows 7)已成功从远程服务器签出。请检查此问题以获取更多详细信息Proper way to debug SVN+SSH checkout over VPN failure? How to compare with a working setup?

【问题讨论】:

  • 存储库实际是如何存储的?我们可以看看网址吗?必须在 VPN 之上使用 SVN+SSH 似乎很奇怪。
  • @artbristol - 用于结帐的存储库 URL 类似于 svn+ssh://@...com/var/svn/repositories/ / 团队的其他成员(使用运行 windows xp 的 32 位系统)能够结帐。
  • 有什么建议吗?请说点什么...这种沉默正在杀死我... :)
  • ppk 指向一个由 putty 创建/使用的密钥?您需要将该密钥转换为正确的 RSA/DSA 密钥
  • @mkro 您能否详细说明一下我所拥有的文件 - 一些 .ppk、.key、.crt 和一些打开的 vpn 配置文件

标签: svn windows-7 64-bit openvpn svn-checkout


【解决方案1】:

如 mkro 所述,.ppk 证书是 Putty 独有的。 Putty 有一个非常方便的工具,可以在DSARSAPPK 证书之间来回切换,您可以下载here。您将使用的几乎所有建立 SSH 连接的工具(Putty 除外)都将使用 DSARSA 密钥对。

如果你在 Linux 上,你可以下载 putty 源包并自己构建它以获得puttygen 的副本,或者如果你在一个提供包管理器的发行版上,你可以尝试安装它。例如,在 Ubuntu 上,你会这样做:

$ sudo apt-get install putty-tools
$ puttygen <your.ppk> -O private-openssh -o <whatever you want to name it>

【讨论】:

  • @TkTech, @mkro - 我在 Windows 7 系统上使用 Putty。现在我有从队友的工作设置中获取的 ppk 文件。那么我还需要转换为 RSA/DSA 密钥吗?我认为我们不需要让管理 SVN 服务器的人员向我们发送一些密钥。我是否正确地假设现在需要做的一切都是在我们的本地设置上完成,对吧?
  • 是的,您确实需要转换密钥。我无法回答您需要更改的所有内容是否都是本地的,但请继续尝试先转换密钥。
  • @mkro - 我不知道我做了什么,但就像你说的,我尝试转换我的队友用来使用腻子连接的同一个 ppk 文件。 Putty->加载现有的私钥文件->加载->输入文件的密码->然后它提供保存私钥和公钥文件的选项。我在正确的轨道上吗?我的队友不必做这一切。此外,由于我在实践中对公钥/私钥加密的了解有限,我无法看到它的发展方向......
  • hm,等一下:我是否正确理解您的队友可以使用 ppk-keys 访问存储库,但它对您不起作用?如果是这样,你的队友有什么不同的做法?你能找出他们使用的配置吗?
  • @mkro - 你做对了...... AFAIK,唯一的区别 - 我们的 - 64位的Windows 7,他们的 - 32位的Windows XP。我应该检查哪些其他配置?
【解决方案2】:

终于自己解决了这个问题!我应该以管理员身份运行 OpenVPN GUI。

我这样做了,它奏效了 -

开始菜单 -> 右键单击​​程序列表中的“OpenVPN GUI” -> 其余都相同,选择配置文件并单击连接(OpenVPN)。

我是怎么做到的
我尝试安装不同版本的 OpenVPN,并且有一次选中了“打开阅读我”的复选框。它打开了自述文件,上面写着“在使用 Windows Vista 时,您需要以管理员身份运行 OpenVPN GUI”。虽然我使用的是 Windows 7 系统,但我想也让我试试这个,而且它有效!终于解脱了。希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多