DBeaver doesn't work with OpenSSH keys
See original GitHub issueSystem information:
- Operating system (distribution) and version: MacOs 11.5.2
- DBeaver version
- Additional extensions
Connection specification:
- Database name and version:
- Driver name: JSCH
- Do you use tunnels or proxies (SSH, SOCKS, etc)? : SSH
Describe the problem you’re observing:
When using ED25519 Open SSH key, the default JSCH errors out with message “Invalid key”. Continuing from #5845
Steps to reproduce, if exist:
Create an openssh ed25519 key pair, put the public key on server, try using dbeaver to connect to server using the private key. Now try again after installing SSHJ and switching to it in advanced settings on the ssh tab, or just ssh command in terminal, and it will work just fine.
Include any warning/errors/backtraces from the logs
2021-09-05 12:39:33.262 - Connect with 'digitalocean' (mariaDB-17b45a6f0cc-44e7a9a411fcc46b)
2021-09-05 12:39:33.267 - Adding identity key
2021-09-05 12:39:33.271 - Attempting to convert an unsupported key into suitable format
2021-09-05 12:39:33.322 - Connection failed (mariaDB-17b45a6f0cc-44e7a9a411fcc46b)
org.jkiss.dbeaver.model.exec.DBCException: Can't initialize tunnel
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:911)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.runSync(ConnectJob.java:98)
at org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler.connectToDataSource(DataSourceHandler.java:113)
at org.jkiss.dbeaver.ui.actions.datasource.UIServiceConnectionsImpl.initConnection(UIServiceConnectionsImpl.java:70)
at org.jkiss.dbeaver.model.navigator.DBNDataSource.initializeNode(DBNDataSource.java:158)
at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.getChildren(DBNDatabaseNode.java:223)
at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.getChildren(DBNDatabaseNode.java:1)
at org.jkiss.dbeaver.model.navigator.DBNUtils.getNodeChildrenFiltered(DBNUtils.java:78)
at org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService.evaluate(TreeLoadService.java:49)
at org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService.evaluate(TreeLoadService.java:1)
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:88)
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:72)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.jkiss.dbeaver.DBException: Cannot add identity key
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.setupTunnel(SSHImplementationJsch.java:70)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationAbstract.initTunnel(SSHImplementationAbstract.java:134)
at org.jkiss.dbeaver.model.net.ssh.SSHTunnelImpl.initializeHandler(SSHTunnelImpl.java:75)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:906)
... 14 more
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@419d3174
at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:406)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:366)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.addIdentityKey0(SSHImplementationJsch.java:243)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.addIdentityKey(SSHImplementationJsch.java:226)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.setupTunnel(SSHImplementationJsch.java:68)
... 17 more
2021-09-05 12:39:33.379 - org.jkiss.dbeaver.model.exec.DBCException: Can't initialize tunnel
org.jkiss.dbeaver.model.exec.DBCException: Can't initialize tunnel
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:911)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.runSync(ConnectJob.java:98)
at org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler.connectToDataSource(DataSourceHandler.java:113)
at org.jkiss.dbeaver.ui.actions.datasource.UIServiceConnectionsImpl.initConnection(UIServiceConnectionsImpl.java:70)
at org.jkiss.dbeaver.model.navigator.DBNDataSource.initializeNode(DBNDataSource.java:158)
at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.getChildren(DBNDatabaseNode.java:223)
at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.getChildren(DBNDatabaseNode.java:1)
at org.jkiss.dbeaver.model.navigator.DBNUtils.getNodeChildrenFiltered(DBNUtils.java:78)
at org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService.evaluate(TreeLoadService.java:49)
at org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService.evaluate(TreeLoadService.java:1)
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:88)
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:72)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.jkiss.dbeaver.DBException: Cannot add identity key
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.setupTunnel(SSHImplementationJsch.java:70)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationAbstract.initTunnel(SSHImplementationAbstract.java:134)
at org.jkiss.dbeaver.model.net.ssh.SSHTunnelImpl.initializeHandler(SSHTunnelImpl.java:75)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:906)
... 14 more
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@419d3174
at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:406)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:366)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.addIdentityKey0(SSHImplementationJsch.java:243)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.addIdentityKey(SSHImplementationJsch.java:226)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.setupTunnel(SSHImplementationJsch.java:68)
... 17 more
2021-09-05 12:39:33.417 - Cannot add identity key
org.jkiss.dbeaver.DBException: Cannot add identity key
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.setupTunnel(SSHImplementationJsch.java:70)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationAbstract.initTunnel(SSHImplementationAbstract.java:134)
at org.jkiss.dbeaver.model.net.ssh.SSHTunnelImpl.initializeHandler(SSHTunnelImpl.java:75)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:906)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.runSync(ConnectJob.java:98)
at org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler.connectToDataSource(DataSourceHandler.java:113)
at org.jkiss.dbeaver.ui.actions.datasource.UIServiceConnectionsImpl.initConnection(UIServiceConnectionsImpl.java:70)
at org.jkiss.dbeaver.model.navigator.DBNDataSource.initializeNode(DBNDataSource.java:158)
at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.getChildren(DBNDatabaseNode.java:223)
at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.getChildren(DBNDatabaseNode.java:1)
at org.jkiss.dbeaver.model.navigator.DBNUtils.getNodeChildrenFiltered(DBNUtils.java:78)
at org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService.evaluate(TreeLoadService.java:49)
at org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService.evaluate(TreeLoadService.java:1)
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:88)
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:72)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@419d3174
at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:406)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:366)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.addIdentityKey0(SSHImplementationJsch.java:243)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.addIdentityKey(SSHImplementationJsch.java:226)
at org.jkiss.dbeaver.model.net.ssh.SSHImplementationJsch.setupTunnel(SSHImplementationJsch.java:68)
... 17 more
Issue Analytics
- State:
- Created 2 years ago
- Reactions:3
- Comments:14 (5 by maintainers)
Top Results From Across the Web
DBeaver ssh tunnel invalid private key - Stack Overflow
I've got an error while trying to establish a new connection through an ssh tunnel using DBeaver (6.1. 2).
Read more >SSH configuration - DBeaver Documentation
DBeaver supports the following SSH authentication methods: Username/password; Public key authentication; Agent authentication.
Read more >How to connect to a remote database using DBeaver via SSH ...
2. Connect · On the SSH details menu (step 2), provide the password for your encrypted private key file. · Select SSHJ, under...
Read more >SSH tunnel using publickey does not work
When creating/editing a connection that uses an SSH tunnel, if 'publickey' is ... when the public key alone is complete the connection.
Read more >Dbeaver SSH Tunnel Error - mysql - Ask Ubuntu
This is the answer by EugeneSmoliy on github. Run this on your key to convert it to RSA private key. Helped me. ssh-keygen...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Continuing from #5845 the current workaround and solution of using the ssh-keygen to convert openssh key to rsa key doesn’t work because it doesn’t convert elliptical keys like ED25519 which is one of the standard/recommended type of keys now. (Example Gitlab recommendation of ED25519 keys: https://docs.gitlab.com/ee/ssh/index.html#ed25519-ssh-keys)
Workaround Install SSHJ (and reinstall it every DBeaver update)
Proposed solution include SSHJ with dbeaver by default, so that user doesn’t have to install SSHJ every single update.
I created a separate issue about bundling SSHJ by default. See #14635