Bash 侵权行为;ssh错误:无法连接到URL处的存储库。。。网络连接意外关闭
我使用OrtoiseSVN 1.7.8访问SVN存储库时遇到问题 SVN存储库位于CentOS 6.3机箱上,带有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
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