如何通过每个人都可以访问的服务器建立隧道来 ssh 到无法访问的远程机器?

如何通过每个人都可以访问的服务器建立隧道来 ssh 到无法访问的远程机器?

机器:

  • 让我们呼叫我的机器的MacBook
  • 我在互联网上有一个服务器。叫它服务器
  • 我在其他地方有一台 Mac Mini,我可以通过 iChat 屏幕共享来访问它。我们称之为小型的

可达性:

  • 服务器都看不到的MacBook也不小型的
  • 的MacBook可以看到服务器但不是小型的
  • 小型的可以看到服务器, 但不是的MacBook

屏幕共享很慢。我想要一个 SSH 连接来小型的。由于路由器、NAT等原因,无法进行直接连接。

我想要做的是连接两者的MacBook小型的服务器通过 SSH,创建适当的隧道,以便从的MacBook我可以运行ssh …命令来连接到小型的通过隧道连接服务器

所以我的问题是,我必须在哪些机器上运行哪些命令才能使其工作?

为了简单起见,请使用服务器小型的的MacBook作为答案中的主机名。

答案1

只需要一个 ssh 隧道。从 mini 开始:

ssh -N -R 0.0.0.0:8022:localhost:22 serverUser@server

现在你可以从 macbook 连接到服务器ssh -p 8022 miniUser@server

请确保已在服务器的中GatewayPorts设置为。yes/etc/ssh/sshd_config

此外,您可能希望在 ~/.ssh/config 中定义一些内容:

Host gate.mini
    HostName server
    Port 8022
    HostKeyAlias mini

这使得您可以做更连贯的事情,同时不受服务器指纹不匹配的困扰。ssh [email protected]

答案2

在 Mac Mini 上执行以下操作:

ssh -R 1234:localhost:22 serverUser@server

这会将服务器端口 1234 的连接转发到 Mac Mini 上的端口 22。

然后,在 MacBook 上执行以下操作:

ssh -L 1235:localhost:1234 serverUser@server

这会将 MacBook 上端口 1235 的连接转发到服务器上的端口 1234(然后通过上述命令转发到 Mac Mini)。

最后,为了获取实际连接,请在 MacBook 上执行以下操作:

ssh -p 1235 miniUser@localhost

它连接到 MacBook 上的端口 1235,然后转发到服务器上的端口 1234,再转发到 Mac Mini 上的端口 22。端口 1234 和 1235 可以设置为或多或少你喜欢什么就用什么 - 可以是相同的(我使用了不同的数字以使解释更清楚)。同样,如果 Mac Mini 上的 SSH 正在监听不同的端口,则应该更改端口 22。

答案3

您可以通过 ssh 会话传输任何命令。这意味着您也可以通过 ssh 传输 ssh 命令。

这看起来像这样:

ssh -t [email protected] ssh [email protected]

这将打开 ssh 会话服务器然后立即打开第二个 ssh 会话小型的。使用 ssh 隧道,这应该可以顺利完成的MacBook机器。至少考虑到小型的可从服务器

要求:

  • 开启 ssh的MacBook
  • ssh 服务器和 ssh 客户端服务器
  • ssh 服务器和 ssh 客户端小型的

创建一个别名可能很不错,这样您就不必每次连接时都输入这个别名。另外,考虑一下无密码连接服务器因此您不必为此隧道连接输入2个密码。

相关内容