9

当我尝试结帐时:

svn checkout svn+ssh://serveradmin%foo@foo.com/home/87292/data/svn/repository/trunk .

我得到这个(无用的)错误:

svn:网络连接意外关闭

发生了什么?

4

16 回答 16

10

这可能是由于身份验证失败而发生的。您可能已缓存的凭据与您尝试访问的站点不匹配。您可能需要在站点上注册一个 SSH 密钥。

正如下面 notallbert 所建议的,使用 SVN_SSH 标志在详细模式下获取详细错误

export SVN_SSH="ssh -v "

您可能会在 上看到类似这样的输出stderr

Add correct host key in /home/jcrawford/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/jcrawford/.ssh/known_hosts:4
  remove with: ssh-keygen -f "/home/jcrawford/.ssh/known_hosts" -R 192.168.0.107
ECDSA host key for 192.168.0.107 has changed and you have requested strict checking.
Host key verification failed.

从文件中删除属于您的 svn 服务器 IP 地址的行条目,在我的情况下是 192.168.1.107~/.ssh/known_hosts

于 2010-09-05T23:12:42.057 回答
9

好的。这是我修复这个问题的方法(在 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

而已!

希望有帮助。瑞克

于 2011-01-23T23:58:19.010 回答
8

我怀疑乔尔和安迪是对的。

您可以使用 ssh 详细标志来帮助找出这类问题。

export SVN_SSH="ssh -v "
svn checkout svn+ssh://serveradmin%foo/blah blah blah
于 2013-09-16T20:51:19.523 回答
7

我有同样的错误,但要进行修订。清除 .ssh/known_hosts 解决了问题,因为 SSH 密钥已过时。

于 2012-07-11T23:42:39.833 回答
2

我正在连接到本地网络 svn,这从某个时候发生在我身上(它实际上是定期发生的)。

我在网上找到的所有参考资料都提到了与 SSH 相关的内容。SSH 很可能也是我问题的根源,但我设法通过杀死一些 svnserve 进程来克服这个问题。

我可以这样做,因为我知道我的服务器的用途是什么,但不知道在具有更多并发性的服务器中执行此操作的相关性。

于 2012-11-22T10:56:41.330 回答
0

我遇到此“svn:网络连接意外关闭”错误的另一个原因是 /var is full ,这导致 svn 无法将任何内容写入磁盘。所以也许在继续上述步骤之前先检查你的磁盘空间(du -m)?

于 2013-02-01T08:52:50.257 回答
0

确保您的 svn url 中没有虚假冒号

它不应该是:

    user@host.com:/path/to/repo 
                 ^
                 spurious colon should be removed  

但应该是:

    user@host.com/path/to/repo
于 2013-03-26T21:55:16.337 回答
0

就我而言,在使用 svn+ssh 时,错误源于 gforge 用户没有主目录这一事实。我手动添加了它们,问题就消失了。

于 2013-04-16T21:59:53.503 回答
0

检查您的防火墙设置。我在我的服务器上安装了 ConfigServer Security & Firewall (CSF),它阻止了 ssh+svn 端口 2222。我允许这些端口并能够执行更新。

于 2014-11-02T22:12:30.453 回答
0

如果您使用的是 Putty,它会保存您的登录凭据,因此可能会在您尝试结帐时让 tortoise 出现以下错误:连接意外关闭。如果发生这种情况,请打开 putty 并单击默认设置以加载主机名。清除主机名并保存。这对我有用...

于 2011-04-30T23:13:31.977 回答
0

在我的 linux 服务器上设置 ssh 后,我也遇到了这个问题。我的问题是我用 puttyGen 创建了密钥。公钥文件首先必须使用 puttyGen 从 .ppk 文件格式进行转换。在那之后,一切都像一个魅力。

于 2014-11-21T21:50:17.010 回答
0

E210002: 网络连接意外关闭

ssh 尝试使用默认端口 22 进行连接时,我一直收到上述错误。为主机指定正确的端口后问题已解决。

于 2017-03-03T19:19:39.997 回答
0

只是将我相关的两分钱添加到旧线程中:

我将我的 svn 版本 1.10.4 (r1850624) 设置为使用 sasl

我能够使用 Windows(乌龟)和 MacOS 签出我的 repo,但是当我尝试从另一台 Debian CLI v10 机器上签出时,我会收到一对错误:

svn: E170013: 无法连接到 URL 'svn://myServer/myRepo' 的存储库

svn: E210007: 无法协商认证机制

注意:如果我在 /myRepo/conf/svnserve.conf 中注释掉“use-sasl=true”并设置“anon-access = read”,那么我可以在 Debian 服务器上结帐(所以我是尝试使用结帐有一个 sasl 身份验证问题,尽管“svnserve --version”在两台服务器上都显示“Cyrus SASL 身份验证可用。”并且两者都可以成功“sudo testsaslauthd -u myUser -p myP@5swd”和 tcp 3690 在两台服务器之间打开)

我用 --log-file /var/log/svn.log 运行 svnserve,所以在那里,我看到了(OP 的问题):

ipAddrOfServerAttemptingCheckout - - ERR - 0 210002 网络连接意外关闭

解决方案(对我而言):在尝试结帐的服务器上,我只安装了 libsasl2-modules(我只需要安装 sasl2-bin 即可让 Windows/MacOS 能够结帐):

sudo apt install libsasl2-modules

现在我可以从任何地方结帐(实际上,我现在能够“svnsync init”,这就是我意识到我遇到了身份验证问题的时候)

于 2022-02-01T21:08:02.540 回答
0

其他可能的原因是服务器中实际上没有安装 subversion(例如,存储库已移动到新服务器)。

于 2016-06-07T04:42:04.183 回答
0

嗨,我在 OS X Yosemite 上遇到了同样的问题。我阅读了所有这些答案,@notallbert 评论是解决问题的途径。似乎 OS X 无法处理 svn+ssh 方案,所以添加

export SVN_SSH="ssh "

到 /Users/username/.bashrc 是我的解决方案。

谢谢。

于 2016-01-07T03:00:33.063 回答
0

如果您已经设置.bashrc为引用您的密钥,SVN_SSH但随后sudo用于执行svn该命令将不会使用您的SVN_SSH,您可能会收到此错误。

sudo用来签出到一个我没有创建权限的新目录,正确的方法是sudo mkdir whatever,然后设置正确的权限以允许您写入它。

于 2016-10-24T16:25:00.700 回答