SVN + SSH连接给出错误210002,网络连接意外关闭

时间:2009-12-07 17:29:32

标签: svn xcode http ssh

好的,我在设置SVN + SSH时遇到了问题。

我在Linux服务器上运行SVN并尝试从运行Snow Leopard的Mac笔记本电脑进行连接。 XCode尝试连接,但给出消息“错误210002,网络连接意外关闭。”

网上似乎没有任何解释。我使用HTTP与HTTP连接,它适用于所有存储库。

这是我的SVN vesrion:

svn, version 1.5.4 (r33841)
compiled Aug  7 2009, 01:44:11

Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme

我目前已将其设置为使用http,它可以正常运行。

http://username@example.com/svn/project

我可以使用用户名和密码ssh到服务器,并运行

等命令
svn list file:///home/svn/project

我得到了该项目内容的清单。所以,我不认为这是一个权限问题。

服务器上的文件位于/ home / svn / project。

我正试图让它在XCode中运行。使用路径作为/ home / svn / project或/ svn / project在http中无效。

但是,从笔记本电脑中,以下命令会按预期列出信息:

svn list svn+ssh://username@example.com/home/svn/project
username@example.com's password:
branches
tags
trunk
Killed by signal 15.

程序svnserve没有运行,但我登录的用户可以运行它。如果我在前台模式下启动它,它似乎没有任何改变。

任何想法我都缺少。很想能够运行svn + ssh并关闭http访问。

干杯!

修改

有关更多信息,我发现它只是一个存储库。服务器上的所有其他存储库似乎都可以正常使用SVN + SSH。

这似乎是一个XCode错误,但我不确定。这是关于XCode如何读取可能在计算机中缓存的SSH连接信息。

6 个答案:

答案 0 :(得分:4)

要抑制“被信号15杀死”消息,请按照here设置SVN_SSH="ssh -q"

答案 1 :(得分:1)

那个'被信号15杀死'是一个线索,即使你的命令行使用,某些事情也不是很正确。我记得修复同样的问题,但不记得确切的原因。我认为这与我处理非标准ssh端口以及在本地计算机和远程服务器上使用不同用户名的方式有关。

您的svn主机是否有非标准的ssh端口和/或不同的用户名?我从使用SVN_SSH变量切换到将端口设置为在我的.ssh / config文件中放入一个正确的条目,该文件为ssh连接设置了用户名和端口。

Host example.com
  User username
  Port port

我不确定xcode是否尊重你的.ssh / config。

答案 2 :(得分:1)

您的服务器是否有防火墙,如果是,它是否会限制SSH连接尝试次数,例如通过here描述的方法?我们遇到的问题与svn checkout的{​​{1}}连接断开完全相同,而svn lssvn+ssh://以外。我们将防火墙上的连接设置调整得更宽松,允许每分钟更多的连接,这立即解决了我们的问题。似乎SVN在某些操作期间非常积极地启动连接,而对于其他操作则更少。

答案 3 :(得分:1)

此处提供的解决方案均不适用于svn+ssh,但我可以通过https进行连接和结帐:

$ svn checkout --username myusername https://scm.gforge.inria.fr/svn/concha

答案 4 :(得分:0)

我遇到了“被信号15杀死”的问题。顺便说一下。将主机,用户和端口添加到.ssh/config无法解决此问题。

OSX 10.5 / 10.6没有记录标志-q(这就是为什么至少我忽略了这个建议,正如sl建议的那样,很长一段时间),但它确实可以在OSX 10.5上运行(当然也在10.6上,但是我没有它)。在~/.subversion/config中,我添加了

ssh = $SVN_SSH ssh -q -o ControlMaster=no
在第55行附近的某个地方(如果你的盒子仍然是新鲜的,它可能有一个非常类似于此处的注释掉的线)。 -o ControlMaster=no处理我拥有的另一个ssh设置,否则会完全破坏它。

答案 5 :(得分:0)

以下是我修复此问题的方法(在Mac OS X上,但修复程序应该适用于任何客户端)。

当您为SSH服务器使用非标准端口(例如,假设为12001)时,会出现此特定问题。

显然,SVN客户端在命令行上给出端口地址时会遇到语法错误,如下所示:

svn list svn+ssh://username@domainname.com:12001/home/username/svn/myproject

因此,要解决这个问题,您需要为SSH创建一个客户端配置文件,如下所示:

cd ~
cd .ssh
vi config (create a config file like the one that follows)
:w
:q

位于~/.ssh/config中的配置文件:

Host domain.com
  User username
  Port 12001

然后,发出你的svn + ssh命令,没有像这样的端口:

svn list svn+ssh://username@domain.com/home/username/svn/myproject