通过 ssh 连接到公共 IP 后面的本地网络(TCP 转发)

通过 ssh 连接到公共 IP 后面的本地网络(TCP 转发)

我想使用 ssh 连接本地网络中的两台远程计算机,使用唯一的公共 IP XXXX

               |
HOST_A---------|
  172.1.1.2    |          _____________
               |---------|ROUTER PUBLIC|-----------|INTERNET|-------------|CLIENT
               |         _______________                                      
               |   172.1.1.1       X.X.X.X
HOST_B---------|
     172.1.1.3 |

我的公网 IP 在端口 22 上有限制,所以我使用端口 1234。路由器端口转发 1234 已启用并定向到 HOST_A。目前,我可以从执行以下

$ ssh -p 1234[电子邮件保护]

但是,我无法访问 HOST_B,我不明白如何使用 ssh 的 -R 和 -L 选项。我阅读并遵循了网络上的许多示例,但我无法在未登录 HOST_A 的情况下访问 HOST_B。

我很欣赏有关 TCP 转发的解释,因为我不确定是否可以在不配置 HOST_A 的情况下使用 ip XXXX 登录 HOST_B。

我的搜索示例: 如何设置 ssh 隧道来转发 ssh?

答案1

我认为您可以做的更好的事情是打开路由器上的 2 个端口并重定向它们;一个用于 host_a(如您所做的那样),另一个(例如 1235)用于 host_b。因此您可以使用

ssh -p 1234 [email protected]对于 host_a 和

ssh -p 1235 [email protected]对于 host_b

答案2

解决这个问题的替代解决方案是无需 IP 公共即可访问你的计算机的 SSH shell通过在您想要远程访问 SSH 的计算机上安装 robotito,可以从桌面或智能手机(例如 Android)进行。

  • 这将允许您在任何地方使用 Google Talk 客户端应用程序访问 SSH。
  • 无需公共 IP 地址或特殊设置。
  • 它是免费和开源的,不再支付任何应用服务。
  • 无需开启SSH端口(保持你的电脑安全)
  • 无需打开任何隧道(例如 VPN 或类似的东西)

我编写了一个脚本(在 Raspberry Pi 上的 raspbian 操作系统上进行了测试),以便您可以轻松地在 Raspberry Pi、Debian 或 Ubuntu Box(debian 软件包分发版)上安装 robotito。这是让您的 Linux 机器可远程控制的步骤:

  1. 打开 Shell 命令或者您可以称之为终端,转到您的主文件夹,通过命令下载安装程序脚本:

    $wget https://opengateway.googlecode.com/files/robotito

  2. 然后通过输入命令运行脚本:

    $sudo ./robotito

  3. 然后,如果 robotito 使用 gtalk 帐户,则可以从 config 文件夹中编辑文件 credentials.rb ,然后按 ctrl+x 和 y 保存。默认使用 nano 编辑器。

  4. 通过命令从 robotito 文件夹运行 robotito

    $cd robotito

    $./jabbershd start

  5. 现在已完成,您可以从任何 google talk 客户端使用 ssh,请不要忘记将 robotito gtalk 帐户添加到您的 google talk 帐户,并在使用该帐户之前通过聊天进行测试。

答案3

如果您可以从 HOST_A 访问 HOST_B,则只需使用一个命令即可登录到 HOST_A,然后登录到 HOST_B:

ssh -tA user@HOST_A "ssh user@HOST_B"

-t 将分配一个伪终端。如果您使用相同的 rsa 密钥访问 HOST_A 和 HOST_B,则 -A 转发您的代理。

这是从客户端获取 HOST_B 上的终端的一种简单、快速且简单的方法。

相关内容