question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

DBeaver doesn't work with OpenSSH keys

See original GitHub issue

System 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:closed
  • Created 2 years ago
  • Reactions:3
  • Comments:14 (5 by maintainers)

github_iconTop GitHub Comments

2reactions
DevJackSmithcommented, Sep 5, 2021

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.

1reaction
ShadelessFoxcommented, Nov 22, 2021

I created a separate issue about bundling SSHJ by default. See #14635

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found