然而

然而

我有一个问题,4天了没有人能够解决。问题可能出在数据中心方面。

问题是一台服务器无法与另一台服务器通信。我什至得到了两家软件提供商的技术支持来查看我的服务器,他们也找不到任何错误配置。

但两台服务器都可以通过 SSH 从我的家庭网络访问。那么我怎样才能从我的家庭网络(轻松地)创建一个 VPN 隧道,以便它执行以下操作:

Server2 --> Home PC IP --> Server1

或者反之亦然,以便 SSH 工作的我的家庭 IP 充当某种代理,以绕过任何类型的 NAT 阻止或任何可能阻止连接的内容?

问题是,无论如何,第二个服务器只是临时的,所以即使核心问题没有解决,这样做也可以解决我的问题。我只需要直接从一台服务器到另一台服务器获取大量数据。

我怎样才能建立这样的隧道来绕过这个问题呢?

答案1

您需要打开从 home 到 Server1 的 SSH 会话,告诉它将远程端口 2222 转发到本地端口 2222:

ssh -Nt -g -4 -R *:2222:localhost:2222 server1.public.net # 1

这会在 Server1 的端口 2222 上打开一个侦听端口。因此,如果您要在 Server1 上运行“ssh 127.0.0.5 -p 2222”,您实际上会连接到正在运行的任何内容你的家用机器在端口 2222 上。

目前,该端口上没有任何运行。

您让第一个隧道保持运行,并对 Server2 运行不同的命令:

ssh -Nt -g -4 -L 2222:localhost:22 server2.public.net # 2

这意味着无论谁连接到您的家庭计算机上的端口 2222,现在都将真正连接到 server2 上的本地端口 22。

一旦这两个进程运行,如果您连接到 Server1,您将发现一个侦听端口 2222。在 Server1 上连接到该端口,Server2 将做出响应。

因此,要在 server1 上将文件从 server1 中的“/tmp”复制到 server2 中的“/var/tmp”,您需要执行以下操作:

 scp -P 2222 /tmp/myfile [email protected]:/var/tmp

连接速度会相当慢,可以进行优化,但这样事情就会变得更简单。

我使用 127.0.0.5 而不是 127.0.0.5 的原因是,您的服务器可能已经在标题“127.0.0.1”下拥有了自己的密钥,并且如果 SSH 检测到密钥不匹配,它会抱怨(因为在端口 2222 服务器应答的是 server2,而不是 server1)。

第一次连接时,您将收到一条警告,指出端口 2222 上的服务器 127.0.0.5 未知,并且您是否要将其密钥存储在已知主机中。接受。这是server2的关键。

为了安全起见,一旦您不再需要它,您将在用户的主目录中找到一个文件 ~/.ssh/known_hosts ,里面有几行,最后一行可能是

server2.whatever,127.0.0.5 ssh-rsa AAAAB3...

(“127.0.0.5”是标识您想要的线路的重要部分)。删除该行。我的系统从来没有混淆 127.0.0.1 和 127.0.0.5,但为什么要冒险呢?

然而

...下次,一台服务器无法与另一台服务器通信不是一个很有帮助的描述。你知道发生了什么,但你没有清楚地传达它。以下任何一种情况都可能发生:

  • server1 无法 ping server2(防火墙、路由、IP 冲突)
  • server1 无法连接到 server2(防火墙、DNS 问题)
  • server1 连接但挂起(密码不匹配?使用 ssh -vvvv)
  • server1 连接但被拒绝(密钥错误、用户禁止使用明文密码登录、sshrc 配置错误...)
  • server1 连接但连接很快就冻结(MTU 不匹配?)
  • 当然还有其他我还没有经历过的

相关内容