我试图使用ssh隧道连接连接到远程服务器,其中必须使用从本地服务器到远程服务器的端口转发。然后,我需要能够连接到远程服务器上的mysql数据库。
我使用的是tSshTunnel组件,它在其他系统中运行良好,但在我的系统和远程连接中抛出错误,称为"javax.crypto.ShortBufferException:无法在输出缓冲区中存储MAC“。
我找了很多遍,但哪儿也找不到解决办法。

任何帮助都将不胜感激。提前谢谢。
发布于 2019-03-25 20:46:16
经过几天的测试和研究,我得出了一个结论--为了帮助处于相同情况下的其他人,下面将提供一个完整的指南,说明如何通过应用程序(EC2)服务器上的SSH隧道连接到Amazon服务器,这正是ElasticBean秸秆所做的。
使用命令提示符手动连接到服务器:
这是基于我在本文介绍终端上的SSH连接。中发现的。ssh命令不仅能够连接到目标服务器,还可以通过第一个服务器连接到第二个服务器。这就是它的工作原理:
ssh -L 3307:databaseServer.rds.amazonaws.com:3306 -i myPemFile.pem ec2-user@ec2-myApplicationServer.us-west-2.compute.amazonaws.com这个命令所做的是:'ssh通过端口22 (默认)连接到我的应用服务器,并将每个请求绑定到数据库服务器:3306到本地机器的本地主机:3307端口‘
保持此命令窗口的原样,打开一个新窗口并编写:
mysql -u "databaseUserName" -P 3307 -p"databasePassword"这样就显示了mysql提示符。现在,您将通过到应用服务器的SSH连接向数据库服务器发送MySQL命令。本地(您自己的机器)端口3307现在使用应用服务器作为代理绑定到数据库服务器。
在Talend中安装tSshTunnel用于数据集成
在Talend的市场中找到的插件(我使用的是TalendTOS7.1.1)没有出现在调色板菜单中,所以我将tSshTunnel.zip文件解压到文件夹~\TOS_DI-20181026_1147-V7.1.1\plugins\org.talend.designer.components.localprovider_7.1.1.20181026_1147\components\tSshTunnel Go回到Talend,按CTRL F3重新加载组件或重新启动TOS。
tSshTunnel中的Bug及其如何规避
对于具体的问题: Amazon数据库链接通常很长(例如,ktofbf83428349cntdfg.clus33245kfur.us-west-2.rds.amazonaws.com)和‘不能存储MAC’消息的原因显然是如此巨大的输入大小。不过,该插件接受等效的ec2-xx.xx.xx.xx.us-west-1.compute.amazonaws.com URL。这个网址可以用像ipinfo这样的工具来追踪。只要输入你的数据库链接在那里,你就会得到对应的EC2风格的链接(这解决了用户的问题)。
关于Amazon用例使用tSshTunnel的一般说明
为了使答案尽可能广泛,我想添加一些配置细节:
发布于 2022-05-24 15:59:15
如果连接在公钥/私钥中包含密码,则可以修改文件"tSshTunnel_begin.javajet“并在密码字段中插入密码:

https://stackoverflow.com/questions/53941259
复制相似问题