我在 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
。我取消了注释,现在它似乎可以正常工作了。它不存储密码,但无论如何,这正是我想要的。