背景
公共子网有一个Jumpbox
,可以使用一个ssh
文件(示例-pem
第一个专用子网具有一个充当应用程序服务器的EC2实例。只能通过“ ssh
”从“大号”中访问它。此处使用相同的pem
文件。 (示例-ssh -i my-key-file.pem ec2-user@host2
)。此命令在host1
上执行。
1521
上运行。只能从App Server / host2
访问该数据库。我目前的工作方式
host2
已安装sqlplus
客户端。
首先,我连接到host1
,然后连接到host2
,然后执行sqlplus
以在命令行(无GUI)上执行查询。
我计划使用SQL Developer等GUI工具直接从本地计算机进行连接。我认为使用端口转发/ SSH隧道可以实现。
我尝试使用其他选项,但没有成功。以下链接很有用:
我的SSH隧道方法
ssh -N -L 9999:127.0.0.1:1234 ec2-user@host1 -i my-key-file.pem -v -v -v
host1
连接到ssh
。我不知道如何转发许多级别。使用此主机作为我的第一跳。之后,ssh
监听端口9999
,它是我机器的Local
。它将所有流量转发到host1
到端口1234
。 我的假设是,如果我在连接到localhost:9999
的本地计算机上使用sqlplus,则流量将到达host1:1234
127.0.0.1
是因为SSH隧道的目标是相对于SSH服务器host1
。基本上, Target 和 SSH服务器都在同一主机上。 ssh -N -L 1234:db-host:1521 ec2-user@host2 -i my-key-file.pem -v -v- v
host1
此后,ssh使用1234
作为隧道,将端口host2
上的所有传入流量转发到目标主机(数据库主机)/ 1521。
同样,我的假设是,ssh
正在监听1234
上的端口host1
。使用DB Host
作为隧道,将从任何地方到达的所有流量都传递到host2
。
我执行了两个命令,没有看到任何错误。我使用netstat -tulpn | grep LISTEN
验证了哪些端口正在监听。
这两个之后,我的计划是使用主机名localhost
和端口号9999
连接到数据库。
出了什么问题!
我相信我对端口转发工作原理的理解可能不正确。任何输入都会有所帮助。 谢谢您的时间!