之前请教过一次,但是实验之后还是不行
先看拓扑图(来自 MX,测试环境) https://imgur.com/a/iKd2LGb
现在已知所有内网服务都必须过堡垒机 a(192.168.192.130)访问,然后在内部服务器 b(192.168.192.129)上有一个 mysql 服务监听端口为 3306 现在可以通过堡垒机 web 页面直接启动一个 xshell,无需输入任何用户名或密码就会建立一个到 b 服务器的 ssh 连接 现在我尝试利用 ssh 隧道功能,将服务器 b 上的 3306 端口转发到 xshell 所在客户端机器(此处端口号为 33306) https://imgur.com/473D7Km
然后我用 navicat 连接客户端机器的 33306,无法链接,并且如果直接 telnet 这个端口会被立即关闭
当前已做如下尝试 1.由于我已知测试环境堡垒机 a 的 ssh 账户,所以如果我先通过 xshell 新建一个普通的 ssh 会话并连接到 a,然后添加一个隧道此时是可以正常连接 2.如果通过堡垒机的网页建立的 xshell 会话,新建同样的隧道就无法连接
由于堡垒机连接时每次的用户名密码都是随机且不可见的,所以在尝试使用 MX 中的隧道功能时,ssh server 处的用户名密码无法填写
现在的疑问就是,这种情况是有可能打通的吗?
补充一下场景 在服务器 b 上的数据库有时候想要去定位一下问题,在 cli 内直接执行 sql 看着太累了,所以想要把 mysql 服务暴露在本地通过 navicat 连接这样方便调试,并不会暴露到不安全环境,而且用完则关
再次感谢大家
1
a33291 OP 刚测试了一下把 web 上启动的 xshell 临时会话另存为标准会话后,解密了会话中的用户名密码
在会话不断开的情况下,使用其他 ssh 客户端使用账号密码去连接堡垒机,会发现无法连接,提示密码错误 换句话说,这个密码应该是一次性密码,用一次就失效 不是很确定 ssh 隧道是否是单独启动独立的 ssh 会话去建立隧道,如果是的话那肯定就不行,因为密码已经失效了 |
2
F7TsdQL45E0jmoiG 203 天前 1
给 ssh 的用户加密钥登录,再建 tunnel 时用密钥验证
|
4
Volekingsg 203 天前 1
> 不是很确定 ssh 隧道是否是单独启动独立的 ssh 会话去建立隧道
可以不是,另外 ssh 连接也可以复用 我都是用命令行,不清楚 MX 指什么,本质上还是看是否限制 ssh 连接到堡垒机,如果可以就可以 |
5
a33291 OP @Volekingsg 感谢回复,MX 指 MobaXterm
现在堡垒机启动的时候都是直接 web 页面唤起 xshell 或者是 MobaXterm,然后如果唤起的是 xshell,则可以在 "转移规则"处右键新建一个隧道,但是实际测试发现看似建立成功但是无法正常工作 而如果唤起的是 MobaXterm,也有一个新建隧道的能力(也就是图 1),但是他要求填这个堡垒机或者目标机器的密码,实际情况是我无法知道堡垒机或者目标机器的 ssh 用户名和密码 现在也无法控制堡垒机给出其他连接方案,比如楼上说的开放 token 连接,他 web 唤起的程序用到的用户名密码都是随机的,而且一旦唤起的程序连接之后,在用相同用户名密码就无法建立独立的 ssh 连接(xshell 中的"赋值渠道"是可以,但是隧道仍然不行) 如果能通过稳定的用户名密码连接到远程 ssh,这个情况我测试过,隧道的确正常 |
6
yiranfxh 203 天前 1
堡垒机要对 ssh 进行代理审计,一般不支持这种隧道形式。他本地调起 xshell 就是将一次一密传给 xshell ,你可以在本地动点手脚,让他启动你自己的脚本,用他给的一次一密来试试开启 ssh 隧道。但我猜测应该是不行的。你用哪家的堡垒机?
|
7
Orlion 203 天前 1
跟我司开发环境差不多,专门写了个用 http 转发 mysql 包的工具方便从本地连接测试环境的 mysql 。大概原理就是在本机伪装出一个“假 mysql server”,本机 mysql client 连接到本地的假 mysql server ,然后这个假 mysql server 将数据包通过 http 转发到测试环境的一台机器上,这台机器将数据包转发给真正的 mysql server 。
https://github.com/Orlion/hersql 不知道能否解决你的问题 |
8
a33291 OP @yiranfxh 感谢指点
我开始也想过是不是可以对 xshell 或者 mx 本身动手脚,这样当从 web 唤起的时候就执行额外的命令,在首次连接时即能建立一个隧道,但是尚未验证过 生产环境是奇安信的堡垒机,我自己搭建用于测试和验证的开源的 jumpserver |