先说一句话结论:跳板机等于 SSH 隧道 x2。假设有:本机 Local数据库 Db远程服务器 Remote远程跳板机(网关)Gateway场景一:Remote 能直连 Db,但 Local 不能直连 Db、而能连 Remote,此时需要 SSH 隧道 x1,即 Local → Remote → Db。场景二:Remote 能直连 Db,但 Local 不能直连 Db、且不能连 Remote,此时需要 SSH 隧道 x2,即 Local → Gateway → Remote → Db。场景二在内网下比较常见,一般是 Db 不对外网开放、甚至只监听 127.0.0.1,并且 Db 所在的那台 Remote 机器本身就处于内网下,需要统一个跳板机才能连(这个跳板机只负责连 Remote,不负责连 Db,它也连不上 Db),就会出现这种情况。不过一般这种情况下其实企业更多的是自己搭 VPN 而不是用跳板机…… (话又说回来了 VPN 其实严格来说也是一种跳板机,只不过它这里的跳板机专指 SSH Tunneling 了)
区别SSH隧道技术原理:端口转发:SSH隧道通过端口转发(Port Forwarding)技术,将本地端口的数据流通过SSH协议加密后转发到远程服务器的指定端口。加密通信:所有通过隧道传输的数据都经过SSH协议加密,确保数据在传输过程中不被窃听或篡改。例子:小明的数据库连接场景一:使用SSH隧道小明在家里工作,需要访问公司内部的数据库服务器。公司有一台SSH服务器(ssh.company.com),通过它可以安全地访问内部网络。1.配置SSH隧道:SSH服务器: ssh.company.com端口: 22(默认SSH端口)用户名: xiaoming认证方式: 密码或SSH密钥本地端口: localhost:5432(假设数据库是PostgreSQL)远程端口: db.company.com:54322.连接过程:小明在DBeaver中配置SSH隧道,输入上述信息。DBeaver通过SSH隧道连接到ssh.company.com,然后将本地端口5432的数据转发到db.company.com:5432。小明在DBeaver中连接到localhost:5432,就像直接连接到数据库一样。跳转服务器技术原理:多跳连接:跳转服务器(Jump Server)用于在多跳网络环境中建立连接。DBeaver首先连接到跳转服务器,然后通过跳转服务器再连接到最终的数据库服务器。链式连接:每一跳的连接都可以使用不同的协议和认证方式,灵活应对复杂的网络环境。场景二:使用跳转服务器小明需要通过一个跳转服务器(jump.company.com)才能访问最终的数据库服务器(db.company.com)。1.配置跳转服务器:跳转服务器: jump.company.com端口: 22用户名: xiaoming认证方式: 密码或SSH密钥2.配置目标服务器:目标服务器: db.company.com端口: 5432用户名: dbuser密码: dbpassword3.连接过程:小明在DBeaver中首先配置跳转服务器,输入jump.company.com的连接信息。然后,在DBeaver中配置最终目标数据库服务器的信息。DBeaver先连接到jump.company.com,然后通过跳转服务器连接到db.company.com。
先说一句话结论:跳板机等于 SSH 隧道 x2。
假设有:
场景一:Remote 能直连 Db,但 Local 不能直连 Db、而能连 Remote,此时需要 SSH 隧道 x1,即 Local → Remote → Db。
场景二:Remote 能直连 Db,但 Local 不能直连 Db、且不能连 Remote,此时需要 SSH 隧道 x2,即 Local → Gateway → Remote → Db。
场景二在内网下比较常见,一般是 Db 不对外网开放、甚至只监听 127.0.0.1,并且 Db 所在的那台 Remote 机器本身就处于内网下,需要统一个跳板机才能连(这个跳板机只负责连 Remote,不负责连 Db,它也连不上 Db),就会出现这种情况。不过一般这种情况下其实企业更多的是自己搭 VPN 而不是用跳板机…… (话又说回来了 VPN 其实严格来说也是一种跳板机,只不过它这里的跳板机专指 SSH Tunneling 了)