【发布时间】:2011-04-08 08:54:02
【问题描述】:
当我尝试结帐时:
svn checkout svn+ssh://serveradmin%foo@foo.com/home/87292/data/svn/repository/trunk .
我得到这个(无用的)错误:
svn: 网络连接意外关闭
发生了什么事?
【问题讨论】:
当我尝试结帐时:
svn checkout svn+ssh://serveradmin%foo@foo.com/home/87292/data/svn/repository/trunk .
我得到这个(无用的)错误:
svn: 网络连接意外关闭
发生了什么事?
【问题讨论】:
这可能是由于身份验证失败而发生的。您可能缓存的凭据与您尝试访问的站点不匹配。您可能需要在网站上注册一个 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
【讨论】:
好的。这是我修复这个问题的方法(在 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
就是这样!
希望对您有所帮助。 瑞克
【讨论】:
如果您使用的是 Putty,它会保存您的登录凭据,因此 可能在您尝试结帐时让 tortoise 出现以下错误:连接意外关闭。如果发生这种情况,请打开 putty 并单击默认设置以加载主机名。清除主机名并保存。这对我有用...
【讨论】:
我有同样的错误,但提交了修订。清除 .ssh/known_hosts 解决了问题,因为 SSH 密钥已过时。
【讨论】:
~/.ssh/config 的文件权限是错误的。那些必须是准确的600,至少没有组和其他人的写入权限。仅供用户使用
我正在连接到本地网络 svn,这从某个时候发生在我身上(它实际上是定期发生的)。
我在网上找到的所有参考资料都提到了与 SSH 相关的内容。 SSH 很可能也是我问题的根源,但我设法通过杀死一些 svnserve 进程来克服这个问题。
我可以这样做,因为我知道我的服务器的用途是什么,但不知道在具有更多并发性的服务器中这样做的相关性。
【讨论】:
我遇到此“svn:网络连接意外关闭”错误的另一个原因是 /var is full ,这导致 svn 无法将任何内容写入磁盘。所以也许在继续上述步骤之前先检查你的磁盘空间(du -m)?
【讨论】:
确保您的 svn url 中没有虚假冒号
不应该是:
user@host.com:/path/to/repo
^
spurious colon should be removed
但应该是:
user@host.com/path/to/repo
【讨论】:
就我而言,在使用 svn+ssh 时,错误源于 gforge 用户没有主目录这一事实。我手动添加了它们,问题就消失了。
【讨论】:
我怀疑乔尔和安迪是对的。
您可以使用 ssh 详细标志来帮助找出此类问题。
export SVN_SSH="ssh -v "
svn checkout svn+ssh://serveradmin%foo/blah blah blah
【讨论】:
检查您的防火墙设置。我在我的服务器上安装了 ConfigServer Security & Firewall (CSF),它阻止了 ssh+svn 端口 2222。我允许这些端口并能够执行更新。
【讨论】:
在我的 linux 服务器上设置 ssh 后,我也遇到了这个问题。对我来说问题是我用 puttyGen 创建了密钥。公钥文件首先必须使用 puttyGen 从 .ppk 文件格式进行转换。在那之后,一切都像魅力一样运作。
【讨论】:
您好,我在 OS X Yosemite 上遇到了同样的问题。 我阅读了所有这些答案,@notalbert 评论是解决的途径。 好像OS X不能处理svn+ssh方案,所以添加
export SVN_SSH="ssh "
到 /Users/username/.bashrc 是我的解决方案。
谢谢。
【讨论】:
其他可能的原因是服务器中并未实际安装 subversion(例如,存储库已移至新服务器)。
【讨论】:
如果您已经设置.bashrc 来引用您在SVN_SSH 中的密钥,但随后使用sudo 执行svn,则该命令将不会使用您的SVN_SSH,您可能会收到此错误。
我使用sudo签出到一个我无权创建的新目录,正确的方法是sudo mkdir whatever,然后设置正确的权限以允许您写入。
【讨论】:
我在 ssh 尝试使用默认端口 22 进行连接时不断收到上述错误。为主机指定正确端口后问题已解决。
【讨论】:
只是为了将我相关的两分钱添加到旧线程中:
我将我的 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”,这就是我意识到我遇到了身份验证问题的时候)
【讨论】: