DBeaver ssh隧道无效私钥

zin*_*yev 1 ssh private key tunnel dbeaver

只需将其保留在此处,这样就不会丢失解决方案的链接。

我有一个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.....

Run Code Online (Sandbox Code Playgroud)

Fer*_*ann 17

上述建议对我没有帮助。但在最新版本的 DBeaver 中,您只需在高级设置下将实现更新为 SSHJ:

在此输入图像描述

这对我有用!


Y0d*_*0da 12

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

-----BEGIN OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

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

-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

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

ssh-keygen -t rsa -b 2048 -m PEM
Run Code Online (Sandbox Code Playgroud)

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

ssh-keygen -p -m PEM -f id_rsa
Run Code Online (Sandbox Code Playgroud)

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


小智 7

我通过执行以下操作让 SSH 隧道在 DBeaver Community Edition 版本 7.3.4.202101310933 macOS Catalina 版本 10.15.7 上运行:

在 shell 中:~/.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 不是 PEM,正如其他人建议的那样)
  • 输入密码
  • 选择保存密码
  • 选择实现:SSHJ
  • 单击测试隧道配置

显示模式对话框,其中显示

Connected!
Client version: SSHJ_0.27.0
Server version: OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
Run Code Online (Sandbox Code Playgroud)
  • 单击“确定”


zin*_*yev 6

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

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

  • 在最新版本中,您只需将“实现”设置为 SSHJ(在“高级”下),它就应该可以正常工作 (2认同)