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)
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 中:
在连接设置的 SSH 隧道选项卡上
显示模式对话框,其中显示
Connected!
Client version: SSHJ_0.27.0
Server version: OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
Run Code Online (Sandbox Code Playgroud)
所以起初我找到了这个解决方案: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/ 而且效果很好!