I’ve long been a user of DBeaver which works so well across different OSes, so recently I wanted to set up the cloud version called cloudbeaver.
In the course of doing that, I had to generate SSH keys to be able to access remote databases via SSH.
Generate an SSH keypair
The standard way of generating SSH keys is to run this command.
> ssh-keygen -t rsa
This by default creates id_rsa
and id_rsa.pub
under <home directory>/.ssh
folder (both in Windows and Linux)
Everything worked fine until I tried to connect to the remote system from cloudbeaver.
I kept getting an Invalid Privatekey error!
After some digging around I found this Stackoverflow answer.
Essentially, recent versions of OpenSSH (7.8 and newer) create keys which start with –
-----BEGIN OPENSSH PRIVATE KEY-----
However, Java applications which use JSch do not support this format. It supports the classic OpenSSH format where the key starts with –
-----BEGIN RSA PRIVATE KEY-----
ssh-keygen
can be used to convert the key to the classic OpenSSH format using
> ssh-keygen -p -f ~/.ssh/id_rsa -m pem -P passphrase -N passphrase
If the key is not encrypted with a passphrase, then “” needs to be passed in –
> ssh-keygen -p -f ~/.ssh/id_rsa -m pem -P "" -N ""
Generating a new keypair in the classic format
If a new key is being generated then it can be directly generated in the classic format with -m PEM
option
> ssh-keygen -m PEM
Common options to the ssh-keygen
command
-m key format
RFC4716 (RFC 4716/SSH2 public or private key), PKCS8 (PKCS8 public or private key) or PEM (PEM public key)
-t type
rsa1 for protocol version 1 and rsa or dsa for protocol version 2
-b bits
Specifies the number of bits in the key to create. For RSA keys, the minimum size is 1024 bits and the default is 3072 bits.
-C comment
Adds a comment about the key at the end
-f filename
full path to where the key should be saved
-N passphrase
The passpharse for the key (Can be empty e.g. “”)
> ssh-keygen \ -m PEM \ -t rsa \ -b 4096 \ -C "abhijit WORK" \ -f /home/users/abhijit/.ssh \ -N mypassphrase
Reference: