【问题标题】:"Network connection closed unexpectedly" upon svn checkoutsvn结帐时“网络连接意外关闭”
【发布时间】:2011-04-08 08:54:02
【问题描述】:

当我尝试结帐时:

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

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

svn: 网络连接意外关闭

发生了什么事?

【问题讨论】:

    标签: svn ssh openssh


    【解决方案1】:

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

    按照下面 notalbert 的建议,使用 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.
    

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

    【讨论】:

      【解决方案2】:

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

      就是这样!

      希望对您有所帮助。 瑞克

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 在我的情况下,~/.ssh/config 的文件权限是错误的。那些必须是准确的600,至少没有组和其他人的写入权限。仅供用户使用
          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

              不应该是:

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

              但应该是:

                  user@host.com/path/to/repo
              

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                  【解决方案9】:

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

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

                  export SVN_SSH="ssh -v "
                  svn checkout svn+ssh://serveradmin%foo/blah blah blah
                  

                  【讨论】:

                    【解决方案10】:

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

                    【讨论】:

                      【解决方案11】:

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

                      【讨论】:

                        【解决方案12】:

                        您好,我在 OS X Yosemite 上遇到了同样的问题。 我阅读了所有这些答案,@notalbert 评论是解决的途径。 好像OS X不能处理svn+ssh方案,所以添加

                        export SVN_SSH="ssh "
                        

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

                        谢谢。

                        【讨论】:

                          【解决方案13】:

                          其他可能的原因是服务器中并未实际安装 subversion(例如,存储库已移至新服务器)。

                          【讨论】:

                            【解决方案14】:

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

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

                            【讨论】:

                              【解决方案15】:

                              E210002:网络连接意外关闭

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

                              【讨论】:

                                【解决方案16】:

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

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

                                我能够使用 Windows (tortoise) 和 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”,这就是我意识到我遇到了身份验证问题的时候)

                                【讨论】:

                                • 如果有人对在 MacOS 中使用 svn 命令行感到好奇,现在它不仅包含在内,我使用这两个命令轻松设置:'/bin/bash -c "$(curl -fsSL @987654321 @)"' 和 'brew install svn'
                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2010-12-24
                                • 2011-07-31
                                • 2014-06-20
                                • 2021-11-16
                                • 1970-01-01
                                • 2021-12-23
                                相关资源
                                最近更新 更多