我想使用 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 机器可远程控制的步骤:
打开 Shell 命令或者您可以称之为终端,转到您的主文件夹,通过命令下载安装程序脚本:
$wget https://opengateway.googlecode.com/files/robotito
然后通过输入命令运行脚本:
$sudo ./robotito
然后,如果 robotito 使用 gtalk 帐户,则可以从 config 文件夹中编辑文件 credentials.rb ,然后按 ctrl+x 和 y 保存。默认使用 nano 编辑器。
通过命令从 robotito 文件夹运行 robotito
$cd robotito
$./jabbershd start
现在已完成,您可以从任何 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 上的终端的一种简单、快速且简单的方法。