DBeaver ssh 隧道无效私钥

DBeaver ssh tunnel invalid private key

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

我有一个 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但是我真的不想重新创建我的密钥,因为它已经在几个服务器上使用了。

  2. 经过一个小时的谷歌搜索后,我发现了另一个建议:通过 sshj 扩展使用另一个 SSH 实现:https://github.com/dbeaver/dbeaver/issues/3917#issuecomment-410616717 It can be installed via the built-in package manager: Help -> Install New Software -> https://dbeaver.io/update/sshj/latest/ 而且效果很好!

此错误是由于 SSH 私钥的格式所致。默认情况下,ssh-keygen 正在使用 OpenSSH 格式创建一个私钥——用这个 header:

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

但是 DBeaver 只接受使用较旧的 PEM 格式的密钥——header:

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

您可以使用正确的 header 直接生成密钥:

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

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

ssh-keygen -p -m PEM -f id_rsa

DBeaver 的 GitHub.

上有一个未解决的问题

我有 SSH 隧道可以使用 DBeaver 社区版版本 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 隧道选项卡上

  • 使用身份验证方法:Public 密钥
  • 使用私钥:~/.ssh/id_rsa (OpenSSH 不是 PEM,正如其他人所建议的那样)
  • 输入密码
  • select 保存密码
  • select 实现:SSHJ
  • 单击测试隧道配置

显示模态对话框,上面写着

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