连接到路由器内部隧道内的数据库服务器

连接到路由器内部隧道内的数据库服务器

我正在使用 Ubuntu,并尝试连接到数据库服务器,该服务器通过路由器内的隧道进行访问,并且我只能通过 ssh 连接到服务器。有办法吗?

为了使事情变得简单,我将尝试将其绘制成图表:

我 -> 通过 ssh(端口 22)连接到我的服务器(serverip:12345)

myserver -> 有一个到数据库服务器的隧道

数据库服务器 -> 仅接受 myserverip 地址

*serverip:12345 是从我的路由器到我的服务器的端口转发

提前致谢

更新

感谢@Kondybas 的帮助,我尝试了你的建议,但没有奏效。也许我说得不够清楚。

我会再试一次=D。

我在笔记本电脑上,可以通过 ssh 访问我的服务器。我的服务器位于路由器后面(不在笔记本电脑的同一网络中),因此要访问我的服务器,我使用:

ssh -p 12345 user@myserverip

我的服务器已经有到远程数据库的隧道:

ssh -L 1521:localhost:1521 user@mydbserverip

因为当我与服务器位于同一网络时,我可以使用 192.168.0.X:1521 访问数据库

因为我无法接触路由器(将端口 12345 转发到我的服务器的路由器),所以我无法创建到数据库的直接隧道。

有没有办法通过我的服务器从我的笔记本电脑访问数据库?

再次感谢。

答案1

您必须ssh以这样的方式启动:

ssh -f user@server -p 12345 -L localhost:3306:dbserver.ip:3306 -N

解释:

ssh -f user@myserver -p 12345- 连接到myserver端口 12345

-L localhost:3306:dbserver.ip:3306- 所有发往 的数据包都将通过localhost:3306转发到。您可以为 dbserver 使用 FQDN 或 IP。dbserver.ip:3306myserver

-N- 该会话中不会发出任何显式或隐式命令

答案2

Kondybas 说的是正确的......我只会补充一点:D

经过大量阅读并与一些人交谈后,解决方案是:

ssh -p 12345 用户@我的服务器-L 9999:127.0.0.1:3306

解释:

  • -p 12345 是我们在路由器中转发的用于访问我的服务器的端口
  • user@myserver 是用户,myserver 的 ip 地址
  • -L 9999:127.0.0.1:3306 表示我的本地主机上端口 9999 的所有连接都将重定向到端口 3306 上的 myserver(这就是我使用 127.0.0.1 的原因,因为隧道已经创建)

最后一部分允许我使用已经创建到 mydbserver 的隧道

相关内容