我在私有子网下有一个Postgres实例,我没有配置要连接的VPN,即使我的堡垒(jump node)不允许这样做。是否可以通过我的本地计算机将其连接到开发测试?
默认端口为5432。并且我可以通过堡垒节点通过ssh访问我的应用程序服务器。
由于您具有通过堡垒对应用服务器的ssh访问权限。然后,您可以创建两级ssh隧道代理。由于即使是Bastion节点也不允许Postgres,只能通过应用程序服务器允许。
1:创建从Application Server到堡垒节点的隧道。
ssh-add〜/ 。ssh / id_rsa; ssh -oStrictHostKeyChecking =否-Att -l ssh -oStrictHostKeyChecking =否-Att -l -L 5432: :5432
(继续打开此终端)2:创建从堡垒到本地计算机的另一条隧道:(打开新终端)ssh-add〜/
。ssh / id_rsa
; ssh -oStrictHostKeyChecking = no -Att -l -L 5432:localhost:5432(继续打开此终端)3:在连接字符串中使用本地主机或127.0.0.1和5432端口(以从本地计算机进行连接),而不是Postgress端点。
注意:用粗体突出显示的文本替换正确的ssh密钥路径和用户名。并保持两个终端都保持打开状态以保持会话状态。ssh -i key.pem ec2-user@BATION-IP -L 5432:DATABASE-DNS-NAME:5432
然后,在您的SQL客户端中,通过以下方式连接到数据库:
localhost:5432
当SQL客户端访问本地计算机上的端口5432时,SSH连接会将该流量转发到堡垒服务器,堡垒服务器随后将其发送到:DATABASE-DNS-NAME:5432
((您实际上可以在本地使用任何端口号。例如,您可以创建到不同数据库的多个转发连接,每个都在不同的端口上。)