我想使用一个独特的公共IP XXXX连接(使用ssh)本地networking中的两台远程计算机
| HOST_A---------| 172.1.1.2 | _____________ |---------|ROUTER PUBLIC|-----------|INTERNET|-------------|CLIENT | _______________ | 172.1.1.1 XXXX HOST_B---------| 172.1.1.3 |
我的公共IP在端口22有限制,所以我使用端口1234.路由器端口转发1234被启用并定向到HOST_A。 目前,我可以从执行客户端访问HOST_B
$ ssh -p 1234 user @ XXXX
Howerver,我无法访问HOST_B,我不明白如何使用ssh的-R和-L选项。 我阅读并遵循networking中的许多示例,如果没有以前在HOST_A中login,我无法实现HOST_B。
因为我不确定是否可以使用ip XXXX在HOST_B中login而不configurationHOST_A,所以我申明了关于TCP转发的解释。
我的search实例: 如何设置SSH隧道来转发SSH?
我认为你可以做的更好的是在路由器上打开2个端口并redirect它们; 一个用于host_a,就像你已经完成的,另一个用于host_b,例如1235。 所以你可以使用
ssh -p 1234 user@XXXX用于host_a和
ssh -p 1235 user@XXXX用于host_b
您可以在客户端B上configurationSSH以使用不同的端口。 这样做可以让你有两个不同的转发规则。
另一个select是从Host_A的会话连接到host_B。
注意您将需要确保您使用这些机器的静态IP。 如果您使用DHCP,则当您的路由器重新分配IP时,您将成为SOL。
这将允许你从host_A从host_B连接
从Host_A可以运行ssh -p 123 user@local_IP
不需要另一个用户帐户。 您可以同时激活两个会话。
我会再深入一点,因为看起来你对前锋感到困惑。 (或者我是一个完全的延缓和误读你的问题)。
从你的客户端你将要处理1个单一的IP地址。 公共IP。 所有的stream量都会首先到达路由器,然后路由器决定发送到哪里。 这是端口转发的地方。
下图显示了您设置这些特定“路线规则”的位置 
您需要将Host_A与Host_B的端口一起添加到自己的单独SSH端口。
完成此操作后,路由器将知道(基于您使用的端口)将请求发送到何处。
解决这个问题的替代解决scheme,通过在您想要远程访问SSH的计算机上安装robotito,从桌面或仅通过智能手机(例如Android) 访问没有IP Public的SSH shell到您的计算机 。
我做了一个脚本(在Raspberry Pi的raspbian操作系统上testing过),所以你可以在Raspberry Pi,Debian或Ubuntu Box(debian软件包发行版)上轻松安装robotito。 这是让你的Linux机器远程的步骤:
打开Shell命令或者你可以调用它terminal,转到你的主文件夹,通过命令下载安装脚本:
$wget https://opengateway.googlecode.com/files/robotito
之后通过input命令运行脚本:
$sudo ./robotito
然后你可以编辑文件credentials.rb从config文件夹如果robotito使用你的GTalk帐户,并按下ctrl + x和y保存它。 默认使用nano编辑器。
通过命令从robotito文件夹运行robotito
$cd robotito
$./jabbershd start
现在这样做了,你可以使用任何谷歌谈话客户端的SSH,不要忘记添加robotito GTalk帐户到您的谷歌谈话帐户,并使用该帐户之前互相聊天testing它。
您可以使用单个命令login到HOST_A,然后使用HOST_B从HOST_B访问HOST_B:
ssh -tA user@HOST_A "ssh user@HOST_B"
-t将分配伪装。 -A转发您的代理,如果您使用相同的rsa密钥来接受HOST_A和HOST_B。
这是一个简单,快速和肮脏的方式来从客户端获得HOST_Bterminal。