场景如下:我有 4 台主机。
- 客户端/本地主机
- AWS 堡垒主机(仅限端口 22)
- 具有图形桌面的 EC2 实例(私有子网)
- EC2 实例(无图形),带有运行 WebLogic Server 容器的 Docker
问题:我需要能够通过堡垒主机通过互联网浏览器访问该 WebLogic 服务器。现在我只能使用堡垒主机的端口 22,但所有传出连接均已启用。
我的想法是使用 TightVNC 查看器和 SSH 隧道通过堡垒主机到达 GUI 实例。
现在我的问题是,在我的例子中,我不知道如何让我的堡垒主机将用户的传入端口 22 转发到目标端口 5905。我没有堡垒主机上的 root 访问权限。
到目前为止我发现的所有解决方案都涉及通过命令行进行 SSH,而不是使用 VNC。我需要堡垒自动将端口 22 流量转发到 VNC 端口,仅在可能的情况下为我的用户转发,但不是 100% 需要。
public public private private
[user/client] --22-->[bastion]--VNC:5905-->[VNC Server]--80/443-->[Docker/WLS]
GUI CLI GUI CLI
答案1
这应该是很正常的ssh -L 5905:vnchost:5905 user@bastionhost
,其次是vncviewer localhost:5905
公共客户端系统,除非堡垒服务器明确禁用 SSH 隧道或者它与 VNC 服务器主机之间存在防火墙。
-L 5905:vnchost:5905
(或者写成)参数-L localhost:5905:vnchost:5905
意味着 ssh 客户端节点将打开一个端口,并且当客户端上的 VNC 查看器尝试启动连接时,localhost:5905
堡垒主机上的 SSH 服务器守护程序应尝试将隧道发送到。vnchost:5905
如果无法建立连接,SSH 会话中应出现错误消息(VNC 客户端也可能会抛出错误)。
答案2
我有相同的设置并通过下面实现它,其中 bastion 是堡垒的主机名,10.1.1.1 是 ec2 实例
ssh -v -l user -L 5901:localhost:5901 bastion ssh -o StrictHostKeyChecking=no -L 5901:localhost:5901 -N [email protected]
然后通过 vnc 连接到 localhost:5901