我正在使用 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:3306
myserver
-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 的隧道