Talend tSshTunnel的用法

时间:2018-12-27 07:21:44

标签: talend

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

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

我进行了很多搜索,但找不到任何解决方案。

screen shot

任何帮助将不胜感激。预先感谢。

1 个答案:

答案 0 :(得分:0)

经过几天的测试和研究,我得出了一个结论-为了帮助处于相同情况的其他人,下面提供了完整的指南,以提供有关如何通过SSH隧道通过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 ec2-user@ec2-myApplicationServer.us-west-2.compute.amazonaws.com

此命令的作用是:“ 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)中找到的插件未显示在“调色板”菜单中,因此我将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.xx.us-west-1.compute.amazonaws.com URL。可以使用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”
    • 用户名:“数据库用户名”
    • 密码:“用户密码”