通过 VPN 连接到服务器

通过 VPN 连接到服务器

有一台服务器通过 VPN 与其连接(使用 GRE 协议)。我无法从家庭网络连接到此 VPN,因为提供商不允许使用 GRE。但我在其他网络中有另一台工作服务器(从家里通过 SSH 连接到它),我可以从该服务器通过 VPN 连接到服务器。有没有办法通过工作服务器建立隧道从家里连接到 VPN 服务器?SSH 连接对我来说是另一种选择。家用电脑和工作服务器都使用 ubuntu 操作系统,vpn 服务器使用 centos。

答案1

这绝对是可能的。正如您所说,您只需要 SSH,最简单的方法可能是从您的“另一台工作服务器”(我们称之为Server B)到您的第一台接受 GRE 的服务器(称之为Server A)建立 GRE 连接。一旦您完成此操作并且它可以通过 SSH 从Server B到 ,Server A您就可以从家里链接它。即首先连接到Server BSSH,然后Server A从那里通过 SSH 到 。

如果您希望在没有该链的情况下建立 SSH 连接,则必须在 上设置某种路由和/或端口转发 (NAT) Server B。确切的配置在很大程度上取决于您的配置,并且超出了本问题的讨论范围。

答案2

一旦您可以访问工作服务器,您就可以轻松地做到这一点。


示例假设

  • 源系统(在家):10.0.0.1
  • 工作系统(跳转服务器):10.0.0.2(ssh 在标准端口 22/TCP 上运行)
  • 目标服务器:10.0.0.3(ssh 在标准端口 22/TCP 上运行)

  1. 通过服务器B进行端口转发

通过打开 ssh 隧道,您可以设置本地端口转发(-L [<本地地址>:]<本地端口>:<要转发到的远程地址>:<要转发到的远程端口>)然后你可以打开另一个指向 <local_addr> 的 ssh 连接,但使用参数-p <本地端口>或第一个隧道。使用以下配置:

  • 第一条隧道必须通车,其余的才能通车
  • 您可以通过第一个隧道建立更多连接(更多 ssh 连接、scp 连接……)
(1) ssh -L 10022:10.0.0.3:22 10.0.0.2
(2) ssh -p 10022 127.0.0.1
(3) scp -P 10022 <local_file> 127.0.0.1:<destination_file>
+-----+        +-----+        +-----+
|  A  |=== 1 ==|  B  |        |  C  |
|     | -- 2 - | -2- | - 2 -> |     |
|     | -- 3 - | -3- | - 3 -> |     |
|     |========|     |        |     |
+-----+        +-----+        +-----+
10.0.0.1       10.0.0.2       10.0.0.3
  1. 本国的使用“本机”跳转主机进行 ssh 连接

ssh 为这种连接提供“原生”支持,使用-J <目的地>参数。对于目的地建议使用配置(~./ssh/config)文件。

代码示例如下(外部连接是“透明的”)

(1) ssh -J 10.0.0.2 10.0.0.3
+-----+        +-----+        +-----+
|  A  |========|  B  |        |  C  |
|     | -- 1 - | -1- | - 1 -> |     |
|     |========|     |        |     |
+-----+        +-----+        +-----+
10.0.0.1       10.0.0.2       10.0.0.3

相关内容