svn结账时"网络连接意外关闭"

585*_*nor 8 svn ssh openssh

当我尝试结帐时:

svn checkout svn+ssh://serveradmin%foo@foo.com/home/87292/data/svn/repository/trunk .
Run Code Online (Sandbox Code Playgroud)

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

svn:网络连接意外关闭

发生了什么?

Joe*_*son 10

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

正如下面的notalbert所建议的那样,使用SVN_SSH标志来获取详细模式下的详细错误

export SVN_SSH="ssh -v "
Run Code Online (Sandbox Code Playgroud)

你可能会看到这样的输出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.
Run Code Online (Sandbox Code Playgroud)

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


小智 9

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

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

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

svn list svn+ssh://username@domainname.com:12001/home/username/svn/myproject
Run Code Online (Sandbox Code Playgroud)

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

cd ~
cd .ssh
vi config (create a config file like the one that follows)
:w
:q
Run Code Online (Sandbox Code Playgroud)

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

Host domain.com
User username
Port 12001
Run Code Online (Sandbox Code Playgroud)

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

svn list svn+ssh://username@domain.com/home/username/svn/myproject
Run Code Online (Sandbox Code Playgroud)

而已!

希望有所帮助.干草堆


小智 8

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

您可以使用ssh verbose标志来帮助解决这些问题.

export SVN_SSH="ssh -v "
svn checkout svn+ssh://serveradmin%foo/blah blah blah
Run Code Online (Sandbox Code Playgroud)


And*_*dyG 7

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