我在使用 TortoiseSVN 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
我从 TortoiseSVN 收到以下错误:
无法连接到 URL 'svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest' 的存储库 为了更好地调试 SSH 连接问题,请从 [你的 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
我实际上能够登录,但会话随即关闭。
它引起了我的注意,会话正在由 root 为 USER 打开(uid=0)
,这可能是正确的,但我会提到它以防它与问题有关。
我考虑修改svnserve.conf
,但据我所知,通过 访问存储库时没有使用它svn+ssh
,通过此方法为每个登录创建一个私有 svnserve 实例。从手册:
还有第三种调用 svnserve 的方法,那就是在“隧道模式”下,使用 -t 选项。此模式假定 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
有什么想法吗?