cod*_*gle 6 svn ssh bash tortoisesvn openssh
我在使用TortoiseSVN 1.7.8访问SVN存储库时遇到问题.
SVN存储库位于CentOS 6.3机器上,openssh 5.3p1:81.el6并且似乎正常运行.
# svnadmin --version
# svnadmin, version 1.6.11 (r934486)
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令从另一个CentOS框访问存储库:
svn list svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从Win 7工作站使用TortiseSVN浏览存储库时,我无法使用以下路径执行此操作:
svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest
Run Code Online (Sandbox Code Playgroud)
我从TortoiseSVN收到以下错误:
无法连接到URL'svn + ssh://USER@xxx.xx.xx.xxx/var/svn/joetest'的存储库为了更好地调试SSH连接问题,请从[ssh]中删除-q选项.你的Subversion配置文件的一部分隧道.网络连接意外关闭
我可以使用Putty从工作站通过SSH登录.
如果我尝试以root身份访问,结果是相同的.
我已经给了仓库的所有权/var/svn/来USER:USER就跑
chmod 2700 -R /var/svn/.
因为我可以从另一个Linux机箱通过ssh访问存储库,所以权限似乎不是问题.
当我使用日志文件时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
Run Code Online (Sandbox Code Playgroud)
我实际上能够登录,但会话立即关闭.
它引起了我的注意,这个会话是由root用户打开的(uid=0),这可能是正确的,但我会提到它,以防它与问题有关.
我考虑修改svnserve.conf,但据我所知,在访问存储库时没有使用它svn+ssh,通过此方法为每个登录创建一个私有svnserve实例.从手册:
还有第三种方法可以使用-t选项调用svnserve,并使用"隧道模式".此模式假定远程服务程序(如RSH或SSH)已成功验证用户,并且现在正在以该用户身份调用专用svnserve进程.svnserve程序正常运行(通过stdin和stdout进行通信),并假设流量正在通过某种隧道自动重定向回客户端.当像这样的隧道代理调用svnserve时,请确保经过身份验证的用户具有对存储库数据库文件的完全读写访问权限.(请参阅服务器和权限:警告.)它与通过file:/// URL访问存储库的本地用户基本相同.
唯一的非默认设置sshd_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
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我终于找到了解决这个问题的方法。各地的TortoiseSVN FAQ:
TortoiseSVN常见问题解答
来自常见问题解答:
SVN+SSH:连接意外关闭
据报道,以前可以使用的 svn+ssh://username@server.com 形式的 svn+ssh 连接在 TortoiseSVN 1.5 中停止使用。这似乎与 plink 有关,如果您在 PuTTY 中设置了默认主机名,则会发生这种情况。
如果是这种情况,您可以使用 regedit 或 regedt32 清除 HKEY_CURRENT_USER/Software/SimonTatham/Putty/Sessions/Default%20Settings/HostName 来修复此问题。
另一位用户报告了以下服务器端修复:
- ssh 进入你的帐户
- 光盘~
- cp /etc/bashrc .bashrc
- 纳米.bashrc
- 在“mesg y”行之前添加#(将其注释掉)
- Ctrl+X 退出,提示保存时按 Y。
我没有尝试第一种编辑注册表的方法。
编辑 bash 配置的第二种方法对我有用。
关于bash配置方法的说明:
如果您使用共享主机,您的用户 .bashrc 文件可能会加载全局 /etc/bashrc 文件。您将无法编辑全局文件,因此您需要解决这个问题。
一些可能的方法:
尝试添加mesg n到您的用户 .bashrc 文件。我不确定这是否有效,或者是否应该将其放置在加载全局文件之前或之后。
不要包含全局文件并对用户.bashrc文件中的所有设置进行硬编码。
mesg y在加载时从全局 /etc/bashrc 文件中删除该设置。这个问题讨论了如何做到这一点:Use a grep file as an Included source in bash