我在 Mac 上,想要连接到 EC2 实例,然后让该 EC2 实例通过端口 22 连接到远程服务器。据我了解,我会执行以下操作:
sudo ssh -l [USERNAME-FOR-REMOTE-MACHINE] -L 22528:[EC2-MACHINE-IP]:22528 -L 22:[REMOTE-IP]:22 [EC2-MACHINE-IP]
所以我想在本地监听端口 22528(我认为),并以某种方式连接到 [REMOTE-IP] 的端口 22。
我确信我在很多方面都是错的,但如果能得到任何帮助,我将不胜感激
答案1
我画了一些草图
输入 ssh 隧道命令的机器称为»您的主人«。
介绍
当地的:
-L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.
ssh -L sourcePort:forwardToHost:onPort connectToHost
意思是:使用 ssh 连接到connectToHost
,并将所有连接尝试转发到当地的sourcePort
onPort
到名为 的机器上的端口forwardToHost
,可以从该connectToHost
机器访问。偏僻的:
-R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.
ssh -R sourcePort:forwardToHost:onPort connectToHost
意思是:使用 ssh 连接到connectToHost
,并将所有连接尝试转发到偏僻的sourcePort
到onPort
名为 的机器上的端口forwardToHost
,可以从您的本地机器访问该端口。
你的例子
您想通过 EC2 计算机连接到远程服务器,对吗?那么第二张图代表您的场景。 是remotehost
您的 EC2 计算机。 是farawayhost
您的远程服务器及其感兴趣的粉红色端口(在绘图中为 port 456
,但在您的例子中为 port 22
)。因此命令必须如下所示:
ssh -L 22528:REMOTE-IP:22 EC2-MACHINE-IP
绿色端口的端口号是22528
。现在您可以通过 ssh 访问远程服务器
ssh -p 22528 localhost
答案2
您只需要转发本地端口 22528(-L 22528)即可连接到 REMOTE-IP(:[REMOTE-IP])端口 22(:22)
事实就是如此-L 22528:[REMOTE-IP]:22
在执行此操作的过程中,您将把到本地 22528 的连接转发到 EC2 的 22528,那里将无人监听,并且将到本地 22(您可能无法绑定)的连接转发到 REMOTE 的 22。
没有 sudo。