使用跳转主机进行 SSH 端口转发

使用跳转主机进行 SSH 端口转发

我正在尝试弄清楚如何让跳转主机与 AWS Cloud9 一起使用。下图是取自博客文章(在我的临时服务器上)我正在写关于这个主题的文章。整个场景请参阅博文(不到 3000 字)。

图表

以下是管理员使用客户端(笔记本电脑)执行的 4 方初始化序列:

  1. 管理员$C9_TARGET_HOST使用(命令行)终端登录到目标服务器 ( ),并将终端保持打开状态。
  2. 管理员使用第二个(命令行)终端登录跳转主机 ( $C9_JUMP_HOST),并将终端保持打开状态。
  3. 管理员$C9_JUMP_PORT在跳转主机上打开一个端口 ( ) 以接受ssh来自 AWS Cloud9 的连接。
  4. 管理员将 Web 浏览器指向 Cloud9 Web 控制台以开始定义 Cloud9 环境。
  5. 一旦管理员到达提供 Cloud9 ssh 密钥的网页,他们就会将其复制到剪贴板。
  6. 管理员使用连接到目标服务器的开放终端来:
      将 Cloud9 ssh 密钥添加到~/.ssh/authorized_hosts.添加一个新host~/.ssh/config可以更轻松地定义从目标服务器到跳转主机的反向 ssh 端口转发隧道。
  7. 管理员使用连接到跳转主机的开放终端来:
      将 Cloud9 ssh 密钥添加到~/.ssh/authorized_hosts.添加一个新host~/.ssh/config可以更轻松地将ssh命令从 Cloud9 转发到目标服务器。
  8. 管理员定义了ssh从目标服务器到跳转主机的反向端口转发隧道,这意味着当跳转主机与跳转上的ssh 指定端口( )建立连接时,将通过隧道和转发命令连接回目标服务器$C9_JUMP_PORT主持人。
    ssh -fNR \
    $C9_JUMP_HOST:$C9_JUMP_PORT:localhost:22 $C9_JUMP_USER@$C9_JUMP_HOST
    我想知道“-T”选项是否有帮助?应该使用“nohup”吗?
  9. 管理员使用他们刚刚创建的定义创建反向端口转发隧道。 nohup在创建隧道时使用,因此在管理员注销后它仍保留在原位。
  10. 在 Cloud9 Web 控制台中定义跳转主机后,管理员按下一步按钮。
  11. Cloud9 尝试到达跳转主机。
  12. Cloud9尝试通过跳转主机到达目标服务器。
  13. 如果成功,Cloud9 会将管理员网页前进到下一步。
  14. 管理员单击出现的每个下一步按钮,直到定义 Cloud9 环境。

我很乐意在博客文章中向任何可能提供解决方案的人提供信用。

答案1

那么您想要的是建立从目标(私有服务器)到跳转主机(公共服务器)的反向隧道,以便您可以建立从AWS到目标的连接,对吗?

在这种情况下,必须从目标构建反向隧道,因此您可以调用类似的东西

ssh -f -N -R $JUMPER:$PORT:localhost:22 $USER@$JUMPER

也许您还想尝试“autossh”而不是“ssh”,以保持反向隧道打开。该命令对监视端口使用附加参数:

autossh -M $MONITORPORT -f -N -R $JUMPER:$PORT:localhost:22 $USER@$JUMPER

如果只使用 $PORT:localhost:22 部分,则必须分两步到达目标:

  1. 从 AWS ssh 到跳转服务器
  2. 从跳转服务器 ssh 到 localhost:$PORT 以使用反向隧道。

希望有帮助,乔治

相关内容