有两种隧道可供选择,ssh 隧道或者 ssl 隧道:
与 svn+ssh://
不同,ssh 隧道通过 svn://
访问 svnserve 服务器。与 svn+ssh://
相同,需要在服务器上创建一个系统帐户才能使用隧道,但是该帐户不需要拥有版本库的文件访问权限,也不需要在服务器端配置
svn+ssh://
访问。但需要启动 svnserve 服务,使用版本库的 passwd
和 authz
文件创建用户并设置版本库的访问权限。在防火墙上不需要打开 svnserve 的监听端口,但需要打开 ssh 的监听端口。
配置服务器:
安装 Subversion,配置 svnserve 服务,使用版本库的 passwd
和 authz
文
件创建用户并为其设置版本库的访问权限。
配置 sshd 服务以允许端口转发:编辑 sshd 的配置文件,确保启用 AllowTcpForwarding
配置项:
AllowTcpForwarding yes
如果修改了 sshd 的配置文件,需要重启 sshd 服务。
可选的,可以创建一个新的系统账号以用来建立隧道。
配置 macSvn:
单击系统状态栏或访达窗口工具栏中的 macSvn 图标,然后选择 “设置 ...” 菜单项以打开 “设置” 窗口。
在窗口的左侧选择 “其他 / 转发隧道”,并在窗口的右侧选择 “SSH 隧道” 页面。点击 “✚” (添加 ...) 按钮创建一个新的 ssh 隧道。
转发主机: 指定一个域名或 IP 地址,以组成 URL 地址,用来通过隧道访问版本库。
转发端口:指定一个端口号,以组成 URL 地址,用来通过隧道访问版本库。端口如果为
3690
,则可以在 URL 中省略。
监听地址:
选择隧道客户端的监听地址,一般为 127.0.0.1
或 [::1]
。
监听端口:指定一个空闲的 TCP 端口作为隧道客户端的侦听端口。可以指定为
0
来使用随机的端口号。
目标主机:指定 svnserver 服务器的域名或 IP 地址。由于 svnserve 服务器和
sshd 服务器通常安装在同一台计算机上,因此该值可以设置为 127.0.0.1
或
[::1]
。
目标端口:
输入 svnserver 服务器的监听端口。默认值是 3690
。
启动时自动打开隧道: 选中该勾选框,表示在启动 macSvn 时自动打开该隧道。
SSH 主机:指定目标 SSH 服务器的 IP 地址或域名。
SSH 端口:在远程主机上要连接的 SSH 端口。默认值是
22
。
用户名: 指定要在远程计算机上登录的用户。 如果设置为空,则打开隧道时会弹出提示框,提示用户输入用户名。
密码: 如果采用密码认证方式,请在此处输入密码,否则打开隧道时会弹出输入密码的对话框。
私钥文件: 如果使用公钥身份验证,请选择一个文件,从中读取用于公钥身份验证的私钥。
加密短语: 如果您的私钥受口令保护,则可以在此处输入口令,否则打开隧道时会弹出提示框,提示输入口令。
点击 “►”(开始) 按钮打开该隧道,然后就可以在 macSvn 中使用 URL 地址
“svn://转发主机:转发端口/版本库路径
” 来访问版本库。如果 “转发端口” 为 3690
,
URL 地址中可以省略端口号。
使用 ssl 隧道访问 svnserve 服务的速度比 https:// 更快,且不需要在服务器上安装 Apache,只需要安装并启动
svnserve 服务,使用版本库的 passwd
和 authz
文件创建用户并设置版本库的访问权限,这比使用
.htaccess 文件配置 Apache 的用户和访问权限要简单。与 ssh 隧道不同,ssl
隧道不需要系统帐户。不需要在防火墙上打开 svnserve 服务的侦听端口,但是需要打开另一个 TCP 端口来连接隧道并访问版本库。
配置服务器:
安装 Subversion,配置 svnserve 服务,使用版本库的 passwd
和 authz
文
件创建用户并为其设置版本库的访问权限。
安装 sslTunnel 或 Stunnel,并配置一个 ssl 隧道:
如果使用 sslTunnel,编辑配置文件, 创建一个转发隧道。例如:
{ "user": "ssltunnel", # 需创建该用户/组来运行 sslTunnel 服务 "group": "ssltunnel", # 需创建该用户/组来运行 sslTunnel 服务 "tunnels": [ { "listen": { "address": "0.0.0.0", # 隧道监听地址 "port": 3691, # 隧道监听端口 "certs": [ { "cert": "server.crt", # 服务器证书文件的路径 "key": "server.key", # 服务器证书私钥文件的路径 "passphrase": "...." # 私钥文件的加密短语 (如果私钥使用了加密短语进行保护) } ], "client-auth": "verify", # 是否验证客户端证书,verify: 验证客户端证书;no:不验证客户端证书 "client-verify": "ca", # ca: 使用从根 CA 开始的证书链验证客户端证书 # cert: 使用末端 (叶) 证书验证客户端证书 "ca": [ "ca.crt" # 从根 CA 开始的证书链 (client-verify 值为 'ca') # 客户端末端 (叶) 证书 (client-verify 值为 'cert') ], "custom": "" } "connect": { "address": "127.0.0.1", # svnserve 服务器的地址 "port": 3690, # svnserve 服务器的监听端口 "timeout": 5, "tls": false } } ] }
如果使用 Stunnel,编辑配置文件,创建一个转发隧道。例如:
setuid = stunnel4 # 需创建该用户/组来运行 Stunnel 服务 setgid = stunnel4 # 需创建该用户/组来运行 Stunnel 服务 cert = ./cert.pem # 服务器证书文件的路径 key = ./key.pem # 服务器证书私钥文件的路径 verifyChain = yes # 是否使用从根 CA 开始的证书链验证客户端证书 verifyPeer = no # 是否使用末端 (叶) 证书验证客户端证书 CAfile = ./ca.cer # 客户端签发证书从根 CA 开始的证书链 (verifyChain 值为 yes) # 或客户端末端 (叶) 证书 (verifyPeer 值为 yes) client = no # 用作服务器 [svn] accept = 127.0.0.1:3690 # svnserve 服务器的连接地址和监听端口 connect = 3691 # ssl 隧道的监听地址和监听端口
在服务器的防火墙开放 ssl 隧道的监听端口。
启动 sslTunnel 或 Stunnel 服务。
配置 macSvn:
单击系统状态栏或访达窗口工具栏中的 macSvn 图标,然后选择 “设置 ...” 菜单项以打开 “设置” 窗口。
在窗口的左侧选择 “其他 / 转发隧道”,并在窗口的右侧选择 “SSL 隧道” 页面。点击 “✚” (添加 ...) 按钮创建一个新的 ssl 隧道。
转发主机: 指定一个域名或 IP 地址,以组成 URL 地址,用来通过隧道访问版本库。
转发端口:指定一个端口号,以组成 URL 地址,用来通过隧道访问版本库。端口如果为
3690
,则可以在 URL 中省略。
监听地址:
选择隧道客户端的监听地址,一般为 127.0.0.1
或 [::1]
。
监听端口:指定一个空闲的 TCP 端口作为隧道客户端的侦听端口。可以指定为
0
来使用随机的端口号。
启动时自动打开隧道: 选中该勾选框,表示在启动 macSvn 时自动打开该隧道。
服务器主机:指定目的 sslTunnel 或 Stunnel 服务器的域名或 IP 地址 (需要与服务器端证书相匹配)。
服务器端口: 要连接远程主机上的 sslTunnel 或 Stunnel 服务器的侦听端口。您需要在服务器防火墙上开放该端口。
客户端证书: 如果 sslTunnel 或 Stunnel 服务器需要验证客户端证书,指定客户端证书文件。
证书私钥: 如果 sslTunnel 或 Stunnel 服务器需要验证客户端证书,指定客户端证书的私钥文件。
加密短语: 如果证书私钥受加密短语保护,则在此处输入加密短语,否则打开隧道时会弹出提示框, 提示输入加密短语。
验证服务器:指定在建立连接时是否验证服务器证书:
不验证:不验证服务器证书。
验证证书链:使用从根 CA 开始的证书链验证服务器证书。
验证服务器证书:使用末端 (叶) 证书验证服务器证书。
服务器证书:如果需要验证服务器证书,并且 sslTunnel 或 Stunnel
服务器使用自签名证书,则需要指定服务器从根 CA 开始的签发证书链 (服务器证书设置为
“验证证书链
”) 或服务器末端 (叶) 证书 (服务器证书设置为
“验证服务器证书
”)。
点击 “►”(开始) 按钮打开该隧道,然后就可以在 macSvn 中使用 URL 地址
“svn://转发主机:转发端口/版本库路径
” 来访问版本库。如果 “转发端口” 为 3690
,
URL 地址中可以省略端口号。