为什么“svn”在“ssh”终端中挂起,但使用“http”协议可以从桌面“lxterminal”工作?

为什么“svn”在“ssh”终端中挂起,但使用“http”协议可以从桌面“lxterminal”工作?

我在 Windows 机器上运行了 VisualSVN Server。我可以通过多种方式毫无问题地访问它:

  • svn通过以下方式连接到客户端时,在 Debian Linux 客户端的命令行上使用ssh
  • 通过多台机器上的多个 Web 浏览器
  • 当我坐在机器前并使用lxterminal桌面环境时,从我的 Ubuntu 机器上使用。

但是,当我通过远程登录到同一台 Ubuntu 计算机时,我无法完成交易ssh。当我在终端窗口svn中执行任何需要与服务器通信的命令ssh时,它会找到服务器并要求进行身份验证,这是理所当然的,但是一旦提供凭据,它就会挂起而没有任何输出。我可以在服务器端看到它请求数据并且没有记录任何错误,但我无法看到除此之外发生了什么。

在桌面上,它可以正常工作,而不是在窗口中提示我输入密码lxterminal,而是显示一个图形对话框。我不确定这是否相关。

可能相关或不相关的其他信息:

  • 有问题的机器的操作系统:Linux 4.15.0-33-generic #36-Ubuntu SMP Wed Aug 15 16:00:05 UTC 2018
  • svn出现问题的机器上的客户端版本:svn, version 1.9.7 (r1800392)
  • 有问题的客户端是在 Windows 10 主机上的 Oracle VM 中运行的虚拟机
  • 通过代理服务器访问 VisualSVN 服务器。代理服务器是运行相同版本操作系统和 Apache 的 Ubuntu VM。(如前所述,当从运行不同操作系统的多台不同机器访问时,代理可以正常工作。)
  • 工作命令行客户端 SVN 版本包括:
    • svn, version 1.8.9-SlikSvn-1.8.9-X64 (SlikSvn/1.8.9) X64(Windows 10 中的 DOS 提示符)
    • svn, version 1.8.10 (r1615264)(Debian Linux 系统)
  • 所有情况下使用的协议都是 http,例如svn list http://svn.example.com/svn/myproj
  • 所有涉及的机器都在私有网络上。在某些情况下,这包括 VPN,但 VPN 适用于非 Ubuntu 机器,没有明显的问题。

答案1

我将笔记本电脑放在导致问题的 Ubuntu 机器旁边,并做了进一步的实验。将它们放在一起后,我注意到,在从笔记本电脑启动的会话svn中输入密码后ssh,我得到了一个密钥环对话框在桌面会话中。这是非常糟糕的行为,因为我通常使用ssh这个,因为我无法访问机器,但它完全是罪魁祸首。如果我在桌面会话中单击该对话框中的“取消”,终端svn中的交易ssh就会完成。

有了这些信息,我就能找到一个看似永久的解决方案。在文件~/.subversion/servers底部,有一个选项被注释掉了store-passwords = no。我取消了注释,现在它似乎可以正常工作了。它不存储密码,但无论如何,这正是我想要的。

相关内容