通过自定义端口使用 svn+ssh 协议的 SVN 服务器

通过自定义端口使用 svn+ssh 协议的 SVN 服务器

我正在运行 Ubuntu 12.04.2 LTS 作为虚拟机,前端还有 vShield,启用了防火墙并进行了一些 NAT 修改。我的 VPS 配置中还有其他机器,但目前这并不重要。重要的是,我将 Ubuntu 上的 SSH 端口从 22 更改为 765,并在 vShield 上将端口从 424 转换为 765。防火墙具有 SSH(和 SVN)所需的所有权限。

所以我像这样建立 SSH 连接

kopparberg:Webpage marek$ ssh marko@91.***.***.69 -p 424

而且效果非常好。

问题出在哪里?我正在尝试按照本指南在 Ubuntu 上设置 SVN 服务器http://odyniec.net/articles/ubuntu-subversion-server/

如果通过 SVN 协议签出我的存储库“网页”

kopparberg:Webpage marek$ svn checkout svn://91.***.***.69/Webpage --username svnuser

它正常工作。

我真正想做的是结账svn+ssh协议。我尝试了很多不同的方法,但都没有成功。

kopparberg:Webpage marek$ svn checkout svn+ssh://91.***.***.69:424/usr/local/svn/repos/Webpage --username svnuser
svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
svn: Network connection closed unexpectedly

再一次尝试...

kopparberg:Webpage marek$ svn checkout svn+ssh://91.***.***.69/usr/local/svn/repos/Webpage -p 424 --username svnuser
svn: invalid option character: p
Type 'svn help' for usage.

我也添加ssh = ssh -p 424/user/marek/.subversion/config文件中。

kopparberg:Webpage marek$ svn checkout svn+ssh://91.***.***.69/usr/local/svn/repos/Webpage --username svnuser
marek@91.***.***.69's password
Permission denied, please try again.: 

我的密码全都对了。

是否可以使用svn+ssh无需修改配置文件就可以通过自定义端口使用协议吗?


编辑:我发现我应该使用 SSH 用户,而不是 SVN 用户。但我使用的方式完全错误。--username我应该将用户名放在 IP 地址前面,而不是子命令。

kopparberg:Webpage marek$ svn checkout svn+ssh://marko@91.***.***.69/usr/local/svn/repos/Webpage

这看起来好多了,而且很管用!我仍在寻找一种解决方案,让我在结账前无需编辑配置文件。换句话说,我想动态更改 SSH 端口。

答案1

我想我来晚了一点,但我遇到了完全相同的问题,并解决了它。

首先,确定新的默认 SSH 端口。这将影响整个 SSH(即:当您想要使用命令行、putty 等通过 SSH 连接到服务器时。不能仅针对 SVN 更改端口,除非您想要调用多个 SSHD 服务器实例,这超出了原始问题的范围)。

因此,假设如下:

  • 我们希望所有操作都通过端口 123456 完成
  • 您的服务器的 IP 地址是 192.168.1.100
  • 您的路由器/防火墙已开放端口 123456
  • 您的路由器/防火墙已设置端口转发,将外部端口 123456 路由到主机 192.168.1.100 的内部端口 123456

客户端:

无论如何,首先,在客户端机器上修改 <~/.subversion/config>,并在标题为 的行下[tunnels]输入以下行:

ssh = ssh -p 123456

服务器端:

首先,您需要设置新的默认 SSH 端口。在您的 SVN 服务器上,编辑(在 Ubuntu 的情况下)您的 SVN SERVER 配置文件(注意“SSH”后面的“d”):sudo vi /etc/ssh/sshd_config

查找以“Port”开头的行(默认情况下为“Port 22”),然后将“22”更改为“123456”。保存并关闭文件。现在重新启动 SSHD 服务器:sudo restart ssh

假设您的 SVN 设置工作方式与上面所述类似,则一切就绪。如果您坚持转换端口,而不是将其作为单端口转发直通规则保持不变,只需在 中更改服务器端使用的 SSH 端口,即可完成设置。我已通过以下方式从 LAN 外的客户端成功测试了上述设置:

svn --username megaman ls svn+ssh://[email protected]/usr/local/svn/repos/private

希望这可以帮助!

相关内容