DBeaver ssh 隧道无效的私钥

Posted

技术标签:

【中文标题】DBeaver ssh 隧道无效的私钥【英文标题】:DBeaver ssh tunnel invalid private key 【发布时间】:2019-11-20 14:53:58 【问题描述】:

只是想把它留在这里,这样解决方案的链接就不会丢失。

我有一个 4096 字节的私有 RSA 密钥(可能是使用本指南生成的 https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)。

尝试使用 DBeaver (6.1.2) 通过 ssh 隧道建立新连接时出错。


invalid privatekey: [B@540.....

【问题讨论】:

友情提醒,不要忘记接受答案或详细说明,以便我们更好地提供帮助。它可以帮助人们寻找此信息并为我们分类问题。 【参考方案1】:

    所以起初我找到了这个解决方案:https://github.com/rundeck/rundeck/issues/4813#issuecomment-492358649 但我真的不想重新创建我的密钥,因为它已经在多台服务器上使用了。

    经过一个小时的谷歌搜索,我发现了另一个建议:通过 sshj 扩展使用另一个 SSH 实现:https://github.com/dbeaver/dbeaver/issues/3917#issuecomment-410616717 它可以通过内置的包管理器安装:Help -> Install New Software -> https://dbeaver.io/update/sshj/latest/ 效果很好!

【讨论】:

我想你试图建立一个数据库连接?您是否使用了跳转主机?如果是这样,您是否知道如何正确填写 SSH 隧道页面?我正在使用最新的 DBeaver 并且 SSHJ 存在并且似乎正在工作,但隧道连接不是:(。 是的,使用 SSHJ。如果您在 Arch 上,请从 repos dbeaver-plugin-sshj 安装它。 github.com/dbeaver/dbeaver/issues/5845#issuecomment-543187932【参考方案2】:

此错误是由于 SSH 私钥的格式造成的。默认情况下,ssh-keygen 正在使用 OpenSSH 格式创建一个私钥 - 带有以下标头:

-----BEGIN OPENSSH PRIVATE KEY-----

但是 DBeaver 只接受使用旧 PEM 格式的密钥——带有这个标头:

-----BEGIN RSA PRIVATE KEY-----

您可以使用以下方法直接生成带有正确标题的密钥:

ssh-keygen -t rsa -b 2048 -m PEM

或者您可以转换现有密钥(小心!这会覆盖现有密钥,您只需复制私钥并在副本上应用命令):

ssh-keygen -p -m PEM -f id_rsa

DBeaver 的GitHub 上有一个未解决的问题。

【讨论】:

【参考方案3】:

我得到了 SSH 隧道来工作 DBeaver 社区版版本 7.3.4.202101310933 macOS Catalina 版本 10.15.7 通过执行以下操作:

在外壳中: 在默认位置 ~/.ssh/id_rsa 使用创建私有 4096 字节 RSA 密钥 ssh-keygen -t rsa -b 4096

在 DBeaver 中:

单击帮助 > 安装新软件 点击添加... 输入名称:SSHJ 输入位置:https://dbeaver.io/update/sshj/latest/ 单击下一步并完成整个 SSHJ 安装过程 (我第一次尝试没有这样做) 点击保存 点击重启 DBeaver

在连接设置的 SSH 隧道选项卡上

使用身份验证方法:公钥 使用私钥:~/.ssh/id_rsa (OpenSSH NOT PEM,正如其他人所建议的) 输入密码 选择保存密码 选择实现:SSHJ 点击测试隧道配置

模态对话框显示

Connected!
Client version: SSHJ_0.27.0
Server version: OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
点击确定

【讨论】:

嗨,欢迎 :) 你唯一的代码格式有点不和谐。检查我的编辑是否仍然保留该消息,如果没有则对其进行编辑以更正 我确信您的编辑非常好。但我不知道在哪里可以查看您的更改版本 WurmD,我喜欢你的版本。您可以更改我的帖子还是我需要自己复制它们? @shawn-becker 感谢您提及 SSHJ!在生成新的 SSH 密钥后,我一直在努力解决一些不同的问题。问题第 1 部分)人们说要更改 id_rsa 标头。我按照你的建议改回来了。问题第 2 部分)某处不知何故在编辑我的连接设置时,SSHJ 已被关闭以支持 JSch。一旦我将它切换回 SSHJ,我就可以再次连接。你救了我更多的痛苦!谢谢你!

以上是关于DBeaver ssh 隧道无效的私钥的主要内容,如果未能解决你的问题,请参考以下文章

当您从机器 C SSH 进入 ssh 隧道 B->A 时,私钥会发生啥情况?

DBeaver 通过 SSH 隧道连接

ssh-add和ssh-agent

在 DBeaver 中使用 ssh 隧道连接到远程数据库

通过 SSH 隧道的 mySQL 连接字符串,无需密码

SharpSSH 无效的私钥