Linux SVN签出的Noob问题和重新获得它的网络问题

Linux SVN签出的Noob问题和重新获得它的网络问题,linux,svn,ubuntu,networking,firewall,Linux,Svn,Ubuntu,Networking,Firewall,我们有一个安装了SVN的本地服务器,用于开发/测试Purposes。我们希望将数据从它签出到某个地方的实时服务器 我想到的唯一方法就是从实时服务器上使用“svn checkout”,对吗?这样我们就不需要FTP对它进行更改,那可能会导致问题是我们忘记上传一些更改。如果我们发现了问题,我们总是可以回到以前的稳定版本,对吗?如果我在这些问题上有任何错误,请纠正我 问题是我们的本地服务器(Ubuntu)没有一个可以从外部访问的IP。我们有一个来自ISP的路由器,但我们不能用它从现场访问本地服务器。我们

我们有一个安装了SVN的本地服务器,用于开发/测试Purposes。我们希望将数据从它签出到某个地方的实时服务器

我想到的唯一方法就是从实时服务器上使用“svn checkout”,对吗?这样我们就不需要FTP对它进行更改,那可能会导致问题是我们忘记上传一些更改。如果我们发现了问题,我们总是可以回到以前的稳定版本,对吗?如果我在这些问题上有任何错误,请纠正我

问题是我们的本地服务器(Ubuntu)没有一个可以从外部访问的IP。我们有一个来自ISP的路由器,但我们不能用它从现场访问本地服务器。我们愿意要求ISP提供商为本地服务器设置第二个IP,但出于安全考虑,他们希望使用Windows和基于Windows的安全软件(防火墙和防病毒软件)安装一台单独的计算机,这将花费我们很多钱。我们能在本地服务器上设置一个免费的防火墙(我说过Ubuntu)并解决这个问题而不需要额外花钱吗


我希望我说得很清楚。

在不知道确切情况的情况下总是很难评论,但这听起来有点疯狂

您通常要做的是设置一个端口到本地服务器的端口转发。然后可以通过
123.45.67.89:3690访问服务器(例如)

这是一个三分钟的任务,以建立一个正常的家庭路由器

只要Ubuntu服务器以其他方式关闭,并且Subversion或您用于身份验证的任何东西都已正确配置并处于最新状态,这就不会产生安全问题


在任何情况下,在两者之间放置一台Windows计算机来充当防火墙听起来确实没有必要。Ubuntu提供了确保正确安装所必需的一切。

检查您的ISP路由器是否提供了一些端口转发功能,
您可能应该转发ssh端口(在确保每个人的密码都是安全的/或强制使用ssh密钥文件登录之后),并使用SVN+ssh协议访问您的存储库。

如果远程服务器有ssh服务器,则可以使用ssh转发

从内部svn服务器:

ssh -R 7711:localhost:3690 {REMOTE_SERVER}
  • 7711是一个任意端口(您可以使用远程系统上的任何空闲端口),它将从远程系统转发到svn服务器上的端口3690(svn)
  • 3690是内部svn服务器上要与之通信的端口(通过svn://)
  • 如果您在http://上使用subversion,则使用端口80而不是3690
  • 如果您在https://上使用subversion,则使用端口443而不是3690
设置转发后,您可以在远程系统上执行以下操作:

svn checkout {SCHEME}://localhost:7711/{PATH}
  • {SCHEME}是svn、http、https等
  • {PATH}是要签出的正常svn路径
注:

  • 转发的流量通过ssh连接(在不同的“通道”上)进行隧道传输,因此它也被加密,这是一个很好的好处

  • 默认情况下,转发的远程端将侦听环回接口,因此只有该系统上的进程才能使用端口转发端口

  • 一旦关闭ssh会话,转发端口也将关闭。它仅持续ssh连接的持续时间

  • ssh转发功能非常强大。如果您可以在两个系统之间使用ssh,那么您就可以避免任何类似这样的连接问题

  • 执行
    manssh
    并阅读关于-L和-R选项的内容

  • 有关ssh转发的有用链接:

    • :

您应该能够打开现有IP上的单个端口(默认为3690),并将其转发到本地服务器,正如Pekka所指出的那样。这取决于您的路由器,以及您访问路由器上的配置界面的能力

您可以设置防火墙,只允许来自单个远程服务器的传入流量,而不必处理SSH和担心人们试图从任何地方访问您的本地服务器。根据路由器设置,您只需在本地服务器上使用。不过,还是建议进行一些svn身份验证


kanaka描述的SSH转发方法可以防止远程访问本地机器的整个问题,但每次需要访问远程服务器上的svn时,它都要求您从本地服务器执行转发命令。

出于安全目的,他们希望您在Linux服务器和Internet之间放置一台Windows计算机?这是什么ISP?总部位于英国,但现在这并不重要。我猜这对他们来说是一个非标准程序,他们也不太确定什么是最好的选择。顺便问一下,有没有其他方法将内容从开发机器推送到生产服务器?https如何?这就是我现在访问本地服务器的方式。到时候我会做作业的。我对SSH和SVN也没有经验。使用SVN+SSH进行设置要比通过http进行设置容易得多;)因此,在本地服务器上用开发文件运行ssh-R 7711:localhost:3690{REMOTE_SERVER},然后我可以将{URL}:7711/path/to/live/SERVER/public_html/文件夹svn签出到本地服务器到live服务器。我理解正确吗?dvhh、svn+ssh和http与实际问题无关。关键是本地服务器对外不可见。ssh转发将允许远程服务器访问内部服务器,而无需向internet公开任何端口,也无需与ISP或其自己的路由器/防火墙进行任何交互来设置转发。如果您可以在一个方向或另一个方向使用ssh,那么您可以始终使用ssh转发,而不考虑任何其他网络限制。您可以从内部系统运行ssh命令。这会给你带来快乐