2014-09-30 120 views
0

我正在寻找一种方式从我的本地主机:8081(jasperserver)连接到远程服务器,我的mysql数据库是。我在MySQL Workbench中通过SSH(唯一方式)连接到数据库,它工作良好。 我做了很多研究,发现我需要在本地机器上建立一个SSH隧道,但是怎么做呢?如何通过SSH连接到我的jasperserver?当我尝试ssh localhost:8081时,它给了我'连接被拒绝'。我已经安装了openssh for windows。 我也尝试过Pentaho,它与jasper类似,连接方式也一样。 谢谢...Jaspersoft/Pentaho - 通过SSH连接到MySQL

+0

你想使用'ssh'的原因是什么?你不能直接到达远程服务器,因为这应该是首选方式。如果您出于安全原因需要执行此操作,则可以直接建立'ssh',而无需让您的本地Pentaho服务器为您执行此操作。一旦链接建立,任何进程都可以使用转发的端口。 – 2014-09-30 15:50:36

+0

事情是我被告知ssh是我可以连接数据库的唯一方法。我无法连接主机和用户。所以我必须通过ssh来做到这一点。而我无法弄清楚如何正确建立隧道。 – radzik 2014-10-01 08:14:44

+0

你能建立从终端到远程服务器的ssh连接吗? – 2014-10-01 11:39:30

回答

2

的方式正确建立隧道如下:

ssh <user>@<host that has access to database> -L <local port>:<db server>:<remote port> 

然后你连接到localhost:<local port>

示例:您的数据库服务器db.mydomain.com在端口3306上运行,但无法访问它。您首先需要ssh到另一台机器myproxy.mydomain.com,作为用户“用户名”,它可以访问数据库服务器上的端口3306。在该机器上,尝试使用

mysql -h db.mydomain.com -P 3306 -u <your db username> -p<your db password> <db name> 

验证对数据库的访问。然后,通过建立隧道开始:

ssh [email protected] -L 3306:db.mydomain.com:3306 

一旦SSH连接建立,您可以通过使用URL localhost:3306127.0.0.1:3306连接到你的数据库。

隧道正在做什么是将流量重定向到本地计算机上的端口3306到远程数据库服务器的端口3306,使用代理机器作为中继。

+0

我想使用SSH隧道来访问数据库,证书是好的,因为我已经在MYSQL GUI客户端上测试了这一点,我刚刚测试过端口fwding使用命令行和命令行连接到服务器也完美工作。 但是当我尝试连接到使用的Pentaho的数据库服务器提供了错误的 访问被拒绝的用户“统计” @“localhost”的(使用密码:YES) 然后我用JNDI又给credentails那里,但仍然不起作用。 – shzyincu 2016-10-18 07:24:16