Talend tSshTunnel用法

问题描述 投票:0回答:1

我正在尝试使用ssh隧道连接连接到远程服务器,我必须使用从本地服务器到远程服务器的端口转发。然后我需要能够连接到远程服务器上的mysql数据库。

我正在使用tSshTunnel组件,该组件在其他系统中工作正常,但在我的系统和远程连接中抛出错误为“javax.crypto.ShortBufferException:无法在输出缓冲区中存储MAC”。

我搜索了很多但无法在任何地方找到解决方案。

任何帮助将不胜感激。提前致谢。

talend
1个回答
0
投票

经过几天的测试和研究,我得出了一个结论 - 为了帮助处于相同情况的其他人,下面将提供一个完整的指南,介绍如何通过应用程序上的SSH隧道连接到Amazon RDS服务器(EC2) )服务器,这是Elastic Beanstalk所做的。

使用Windows命令提示符手动连接到服务器:

这是基于我在this article about SSH connections on the terminal发现的。 ssh命令不仅能够连接到目标服务器,还能够通过第一个服务器连接到第二个服务器。这是它的工作原理:

ssh -L 3307:databaseServer.rds.amazonaws.com:3306 -i myPemFile.pem [email protected]

这个命令正在做的是:'ssh通过端口22(默认)连接到我的应用服务器,并将每个请求绑定到databaseServer:3306到我的本地机器的localhost:3307端口'

保持此命令窗口不变,打开一个新窗口并写入:

mysql -u "databaseUserName" -P 3307 -p"databasePassword"

这样就显示了mysql提示符。您现在通过与应用程序服务器的SSH连接将MySQL命令发送到数据库服务器。现在,本地(您自己的机器)端口3307使用应用程序服务器作为代理绑定到数据库服务器。

在Talend Open Studio中安装tSshTunnel以进行数据集成

在Talend的市场中找到的插件(我正在使用Talend TOS 7.1.1)没有显示在Palette菜单中,因此我将tSshTunnel.zip文件解压缩到文件夹~\TOS_DI-20181026_1147-V7.1.1\plugins\org.talend.designer.components.localprovider_7.1.1.20181026_1147\components\tSshTunnel返回Talend Studio,按CTRL SHIFT F3重新加载组件或重启TOS。

tSshTunnel中的错误以及如何规避它

针对具体问题:Amazon RDS数据库链接通常很长(例如ktofbf83428349cntdfg.clus33245kfur.us-west-2.rds.amazonaws.com),并且“无法存储MAC”消息的原因显然是这个巨大的输入大小。但是,该插件接受等效的ec2-xx.xx.xx.xx.us-west-1.compute.amazonaws.com网址。可以使用ipinfo等工具跟踪此URL。只需在那里输入你的数据库链接,你就会得到相应的ec2风格的链接(它解决了用户的问题)。

关于Amazon RDS用例的tSshTunnel使用的一般说明

为了使答案尽可能广泛,我想添加一些配置细节:

  • 问题中使用的组件是正确的
  • tSshComponent的配置: 主机名:应该是应用服务器“ec2-xx.xx.xx.xx.us-west-2.compute.amazonaws.com” 端口:“22”,引号之间 用户名:“ec2-user” 密码:“” KeyFile:“C:/folder/pemFile.pem”(注意我们需要使用'/'反斜杠) L隧道字符串:采用“绑定到数据库服务器的计算机上的端口”格式:“数据库服务器”:“数据库服务器上的端口”。例如。 “3307:EC2-yy.yy.yy.yy -....:3306”
  • tDBConnection组件的配置: 主持人:“localhost” 港口:“3307” 用户名:“数据库用户名” 密码:“用户密码”
© www.soinside.com 2019 - 2024. All rights reserved.