我正在尝试使用ssh隧道连接连接到远程服务器,其中必须使用从本地服务器到远程服务器的端口转发。然后,我需要能够连接到远程服务器上的mysql数据库。
我正在使用tSshTunnel组件,该组件在其他系统上也可以正常工作,但在系统和远程连接中引发错误,例如“ javax.crypto.ShortBufferException:无法在输出缓冲区中存储MAC”。
我进行了很多搜索,但找不到任何解决方案。
任何帮助将不胜感激。预先感谢。
答案 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使用的一般说明
为了使答案尽可能广泛,我想添加一些配置详细信息: