Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 侵权行为;ssh错误:无法连接到URL处的存储库。。。网络连接意外关闭_Bash_Svn_Ssh_Tortoisesvn_Openssh - Fatal编程技术网

Bash 侵权行为;ssh错误:无法连接到URL处的存储库。。。网络连接意外关闭

Bash 侵权行为;ssh错误:无法连接到URL处的存储库。。。网络连接意外关闭,bash,svn,ssh,tortoisesvn,openssh,Bash,Svn,Ssh,Tortoisesvn,Openssh,我使用OrtoiseSVN 1.7.8访问SVN存储库时遇到问题 SVN存储库位于CentOS 6.3机箱上,带有openssh 5.3p1:81.el6,似乎运行正常 # svnadmin --version # svnadmin, version 1.6.11 (r934486) 我可以使用以下命令从另一个CentOS框访问存储库: svn list svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest 但是,当我尝试从Win 7工作站使用Tortis

我使用OrtoiseSVN 1.7.8访问SVN存储库时遇到问题

SVN存储库位于CentOS 6.3机箱上,带有
openssh 5.3p1:81.el6
,似乎运行正常

# svnadmin --version
# svnadmin, version 1.6.11 (r934486)
我可以使用以下命令从另一个CentOS框访问存储库:

svn list svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest
但是,当我尝试从Win 7工作站使用TortiseSVN浏览存储库时,我无法使用以下路径:

svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest
我从OtteroiseSVN收到以下错误:

无法连接到URL处的存储库 “svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest'以更好地调试SSH 连接问题,请从[tunnels]中的“ssh”中删除-q选项 Subversion配置文件的一节。网络连接 意外关闭

我可以使用Putty从工作站通过SSH登录

如果我尝试以root用户身份访问,结果相同

我已将存储库
/var/svn/
的所有权授予
USER:USER
并运行
chmod 2700-R/var/svn/

因为我可以通过ssh从另一个Linux设备访问存储库,所以权限似乎不是问题

当我使用
tail-fn 2000/var/log/secure查看日志文件时,每次TortiseSVN请求密码时,我都会看到以下内容:

Sep 26 17:34:31 dev sshd[30361]: Accepted password for USER from xx.xxx.xx.xxx port 59101 ssh2
Sep 26 17:34:31 dev sshd[30361]: pam_unix(sshd:session): session opened for user USER by (uid=0)
Sep 26 17:34:31 dev sshd[30361]: pam_unix(sshd:session): session closed for user USER
我实际上可以登录,但会话随即关闭

我注意到,root
(uid=0)
正在为用户打开会话,这可能是正确的,但我会提到它,以防它与问题有关

我考虑过修改
svnserve.conf
,但据我所知,在通过
svn+ssh
访问存储库时没有使用它,通过此方法为每个登录创建一个私有svnserve实例。从手册中:

还有第三种调用svnserve的方法,那就是“隧道” 模式”,带有-t选项。此模式假定远程服务 程序(如RSH或SSH)已成功对用户进行身份验证,并且 现在正在以该用户的身份调用私有svnserve进程。斯文瑟夫酒店 程序正常运行(通过stdin和stdout进行通信),以及 假设流量在某些时间段内自动重定向 有点像回到客户端的隧道。当SVN服务由 像这样的隧道代理,请确保经过身份验证的用户具有完整的 对存储库数据库文件的读写访问权限。(请参阅服务器。) 和权限:一句警告的话。)它本质上与 本地用户通过文件:///URL访问存储库

sshd\u config
中唯一的非默认设置是:

Protocol 2 # to disable Protocol 1

SyslogFacility AUTHPRIV

ChallengeResponseAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

X11Forwarding no

Subsystem       sftp    /usr/libexec/openssh/sftp-server

有什么想法吗?

我终于找到了解决办法。在所有地方的龟类常见问题解答中:

来自常见问题解答:

据报道,svn+ssh连接的形式 svn+ssh://username@server.com以前正在工作,请停止 与乌龟一起工作VN 1.5。这似乎与普林克有关,而且 如果在PuTTY中设置了默认主机名,则发生

如果是这种情况,您可以使用regedit或regedt32来修复它 清楚的 HKEY_当前_用户/软件/SimonTatham/Putty/Sessions/默认%20设置/主机名


另一个用户报告了以下服务器端修复程序:

  • ssh进入您的帐户
  • 光盘~
  • cp/etc/bashrc.bashrc
  • nano.bashrc
  • 在“mesg y”行前加一个#(该行将其注释掉)
  • Ctrl+X若要退出,请在提示保存时按Y键

我没有尝试第一种编辑注册表的方法

编辑bash配置的第二种方法适合我

关于bash配置方法的说明:

如果您使用的是共享主机,那么您的user.bashrc文件可能会加载全局/etc/bashrc文件。您将无法编辑全局文件,因此需要解决这个问题

一些可能的办法:

  • 尝试将
    mesg n
    添加到您的user.bashrc文件中。我不确定这是不是真的 是否有效或是否应将其置于全球 文件已加载

  • 不要将全局文件和所有设置硬编码包含在 用户
    .bashrc
    文件

  • 按原样从全局/etc/bashrc文件中删除
    mesg y
    设置 加载。本问题讨论如何做到这一点:


这是一个老问题,但仍然是谷歌的头号问题,所以我想与大家分享我的解决方案


简单地说,这是因为我在服务器上没有用户的“主”目录。将SSH客户端更改为Putty附带的plink.exe(右键单击文件夹| TortoiseSVN | Settings | Network)允许我在屏幕上显示窗口时看到错误。

在我的情况下,原因是SVUser没有外壳(它是/bin/false)。
即使使用debug ssh-vvv,这在ssh日志中也不可见

当您遇到此类问题时,调试输出将如下所示

debug1: Entering interactive session.
debug1: Remote: Forced command.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Remote: Forced command.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending command: svnserve -t
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
当shell设置为/bin/bash时,日志将更改为

debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending command: svnserve -t
Path: MyRepo
URL: svn+ssh://svnuser@myServer.com/MyRepo

我也有同样的问题,我尝试了regedit解决方案

在我的情况下,默认主机名不应受到责备,但regedit在保存的会话名(%20)中显示了一个空格

Putty不关心从那里打开连接时的会话名称,因此从Putty连接时没有错误。 但是会话名称在svn+ssh://url中很重要


在我的例子中,Putty会话的名称是“server”,当我进行svn签出时,我使用了“svn”+ssh://server/srv/svn/repo“,因此出现了错误。

也许这个简单的解决方案会奏效:
转到putty,检查保存的会话名称是否与您尝试签出的名称(putty中的svn保存的会话名称)匹配…
例如:在svn保存的会话中,t
sudo apt install subversion