Importing SSH Key: SSH Key is Invalid

When I try to import a key from the clipboard as described here:

I get

I see that…
“Imported keys must be in OpenSSH or PKCS#8 format”
…and…
“Additionally, at this time, imported SSH keys from Putty are not compatible.”
…but that still leaves some ambiguity.

Could you provide a sample file containing either of the supported formats?
In particular, I want to convert what is in my .ssh folder (which was generated by ssh-keygen).

1 Like

I have discovered that what is wanted is the key file as produced by ssh-keygen.

In my case they are files found in ~/.ssh.
These files begin with:

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

Finding this pretty frustrating. Seems like a very limited feature set.
I have a oracle cloud prive key that works fine

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

Yet I can’t add it to bitwarden to make it avaiable across my devices.
Kinda defeats the whole point? Oracle is only lie the 3rd most common vm provider in the world..

1 Like

I’m running into this with keys generated by MobaKeyGen (MobaXTerm SSH Key generator utility). It creates keys in ppk format, but with an option to export as OpenSSH and OpenSSH (new file format). I’m not sure what the difference is, only a few of the base64 characters are different when exported using either one.

If I use ssh-keygen it works fine, of course. I’ll put a test private key here (WHICH I AM NOT USING ANYWHERE) so devs can maybe see what’s wrong with this format.

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtz
c2gtZWQyNTUxOQAAACBz2Mlzce/O8/NTMlUBeBR2Tbt3Wd0BRMRfCEl8YnZUwgAA
AKBMecrrTHnK6wAAAAtzc2gtZWQyNTUxOQAAACBz2Mlzce/O8/NTMlUBeBR2Tbt3
Wd0BRMRfCEl8YnZUwgAAAEAQUqjBjjTpjP1m8ISUoWrEjpGr/iLCmPBlRhG/cT7y
X3PYyXNx787z81MyVQF4FHZNu3dZ3QFExF8ISXxidlTCAAAAEnRlc3RfZm9yX2Jp
dHdhcmRlbgECAwQFBgcICQoL
-----END OPENSSH PRIVATE KEY-----

There is nothing wrong with your SSH key. The library used in Bitwarden is RustCrypto’s ssh-key. It so far supported only openssh keys with a linewidth of 70. Some clients, such as the one you used have a line width of 64 characters. You could fix this in a text editor for your key, but it will be fixed once a new stable release of ssh-key is made (Commits · RustCrypto/SSH · GitHub fixes it).

3 Likes

I reformatted a 64 chars per line RSA key text to 70 chars per line using an editor, and the Chrome extension still says “The SSH key is invalid“.

The text has 1736 characters excluding start and end markers.

The key is like 15 years old and it was generated by PuTTYgen (I believe).

Here is another test key generated by PuTTYgen which is deemed invalid:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdz
c2gtcnNhAAAAAwEAAQAAAQEAmOHkccLujNauWH0u1uur/4fnbrzETc5Rs7l8B/c/
Y4yF0vphDIoaNbQQ5Qxw43oZP/gnksVH2aQBvH6fPZsBh4hlEQ2SuSR628ObkpSw
7GccX3nzpxjJ2wfSg3CJ6M8BNbw4PGu7QJc22sUK2m0O2PjoZacSJCVRmoS1cJGg
cJvX8sYnNYYdCTV+U8NiDyebwm25miGUUIY0uEy8LkssV2La0Yqf9EJn0nnwhagr
teNucP1lWWSaLCd5+26hmh/Ei2pDVT070tPMR25Vgb4iH5FbT5neXYH3N8hL2YzK
ODONJP+xsQRMO5WWdcZpIAQ+oLFty6/qWRscfAVOQTbkmQAAA9DTMZE80zGRPAAA
AAdzc2gtcnNhAAABAQCY4eRxwu6M1q5YfS7W66v/h+duvMRNzlGzuXwH9z9jjIXS
+mEMiho1tBDlDHDjehk/+CeSxUfZpAG8fp89mwGHiGURDZK5JHrbw5uSlLDsZxxf
efOnGMnbB9KDcInozwE1vDg8a7tAlzbaxQrabQ7Y+OhlpxIkJVGahLVwkaBwm9fy
xic1hh0JNX5Tw2IPJ5vCbbmaIZRQhjS4TLwuSyxXYtrRip/0QmfSefCFqCu1425w
/WVZZJosJ3n7bqGaH8SLakNVPTvS08xHblWBviIfkVtPmd5dgfc3yEvZjMo4M40k
/7GxBEw7lZZ1xmkgBD6gsW3Lr+pZGxx8BU5BNuSZAAAAAwEAAQAAAQAQeoi9Gl3M
IHe6YgPidpSbfnKbpQ0jtdFopd2Qnj3e5Q6npwU+7MPWdgo8JhMk8cw28PCTCWCt
PNhTEPLpGQQZL8J1DBl8i0oS1gq2ygAn+xU71VFF+Y4IZddzA3ZZ+bYPrLIDETml
xKbM/eAlmwu2p12lV1TFQKCDHzrPX2MDwByvzLVBfisKTAbUr2SV+Yyh0h5h1+eG
0NNkF1PlQ1w0oIPJJR59wnb3GsLIpIhMJUQVQj5cIQA/6eKnhoBN0E8bMGwduP8x
AOMJa2Zhiu88bspc0x5HaMvUecpBi8tS3QE7WJGfXild5Iea/o1Yqt4tgVIc5e/f
I+2y/Mjs87GBAAAAgGkQHWuA7Enz7tFbh8HRk5GO3rWfxJtwbNVsKp6TrM3AHLOE
4XvmO28k0Q0tLsHzeWTKTxo+qHdQ3/XhpHHfQl0aIrMdBp8KdJYp3+r5tU18YUXK
lUe+FVrjRTvEdGaUzOsuWKvEc4EVUmMxolliL6KvWqqIHta57edC42OllPZ2AAAA
gQD7NvZtWimM+ZfBbLtPwVROjobU2VUgVrs3XrDgvnxC433ZfeLisXj4GFpKzefw
U67Vb1O8PNObctwmJi5qJdDM7UpO4s7VUEUbqMjpDubcgSuxKRSwluekoUiEJc+L
riB/eWDGpdon3YAbt9WL26VXCFgYhWvzngSrL9PSJOIG9QAAAIEAm8tqpn9VJoNU
DqJiew+PXZsosr5AXyXZHaSZic16yBy/TO+Zi966xOgokQKTQptofDZ9K+zArFpp
rRPU878V9uk7O4t4FGPSrMRkfRW6iqSOlk4KbgvtaZcqTKeiGu2BXWLJEQaIoS0p
3VUObIQlQJZWcp76uxzxcn8hG4EOeJUAAAAQcnNhLWtleS0yMDI1MTAxNgECAwQF
BgcICQoL
-----END OPENSSH PRIVATE KEY-----

Reformatted to linewidth 70:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAmOHkccLujNauWH0u1uur/4fnbrzETc5Rs7l8B/c/Y4yF0vphDIoa
NbQQ5Qxw43oZP/gnksVH2aQBvH6fPZsBh4hlEQ2SuSR628ObkpSw7GccX3nzpxjJ2wfSg3
CJ6M8BNbw4PGu7QJc22sUK2m0O2PjoZacSJCVRmoS1cJGgcJvX8sYnNYYdCTV+U8NiDyeb
wm25miGUUIY0uEy8LkssV2La0Yqf9EJn0nnwhagrteNucP1lWWSaLCd5+26hmh/Ei2pDVT
070tPMR25Vgb4iH5FbT5neXYH3N8hL2YzKODONJP+xsQRMO5WWdcZpIAQ+oLFty6/qWRsc
fAVOQTbkmQAAA9DTMZE80zGRPAAAAAdzc2gtcnNhAAABAQCY4eRxwu6M1q5YfS7W66v/h+
duvMRNzlGzuXwH9z9jjIXS+mEMiho1tBDlDHDjehk/+CeSxUfZpAG8fp89mwGHiGURDZK5
JHrbw5uSlLDsZxxfefOnGMnbB9KDcInozwE1vDg8a7tAlzbaxQrabQ7Y+OhlpxIkJVGahL
VwkaBwm9fyxic1hh0JNX5Tw2IPJ5vCbbmaIZRQhjS4TLwuSyxXYtrRip/0QmfSefCFqCu1
425w/WVZZJosJ3n7bqGaH8SLakNVPTvS08xHblWBviIfkVtPmd5dgfc3yEvZjMo4M40k/7
GxBEw7lZZ1xmkgBD6gsW3Lr+pZGxx8BU5BNuSZAAAAAwEAAQAAAQAQeoi9Gl3MIHe6YgPi
dpSbfnKbpQ0jtdFopd2Qnj3e5Q6npwU+7MPWdgo8JhMk8cw28PCTCWCtPNhTEPLpGQQZL8
J1DBl8i0oS1gq2ygAn+xU71VFF+Y4IZddzA3ZZ+bYPrLIDETmlxKbM/eAlmwu2p12lV1TF
QKCDHzrPX2MDwByvzLVBfisKTAbUr2SV+Yyh0h5h1+eG0NNkF1PlQ1w0oIPJJR59wnb3Gs
LIpIhMJUQVQj5cIQA/6eKnhoBN0E8bMGwduP8xAOMJa2Zhiu88bspc0x5HaMvUecpBi8tS
3QE7WJGfXild5Iea/o1Yqt4tgVIc5e/fI+2y/Mjs87GBAAAAgGkQHWuA7Enz7tFbh8HRk5
GO3rWfxJtwbNVsKp6TrM3AHLOE4XvmO28k0Q0tLsHzeWTKTxo+qHdQ3/XhpHHfQl0aIrMd
Bp8KdJYp3+r5tU18YUXKlUe+FVrjRTvEdGaUzOsuWKvEc4EVUmMxolliL6KvWqqIHta57e
dC42OllPZ2AAAAgQD7NvZtWimM+ZfBbLtPwVROjobU2VUgVrs3XrDgvnxC433ZfeLisXj4
GFpKzefwU67Vb1O8PNObctwmJi5qJdDM7UpO4s7VUEUbqMjpDubcgSuxKRSwluekoUiEJc
+LriB/eWDGpdon3YAbt9WL26VXCFgYhWvzngSrL9PSJOIG9QAAAIEAm8tqpn9VJoNUDqJi
ew+PXZsosr5AXyXZHaSZic16yBy/TO+Zi966xOgokQKTQptofDZ9K+zArFpprRPU878V9u
k7O4t4FGPSrMRkfRW6iqSOlk4KbgvtaZcqTKeiGu2BXWLJEQaIoS0p3VUObIQlQJZWcp76
uxzxcn8hG4EOeJUAAAAQcnNhLWtleS0yMDI1MTAxNgECAwQFBgcICQoL
-----END OPENSSH PRIVATE KEY-----

ssh-keygen can read it just fine even in 64 linewidth format:

$ ssh-keygen -l -f PuTTYgen
2048 SHA256:MFB4RzW4iV1WBYdLCkAGABqOBjZihvEbl8sZnBk6gWA rsa-key-20251016 (RSA)

Workaround:

$ ssh-keygen -p -f PuTTYgen
Key has comment ‘rsa-key-20251016’
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.

This operation somehow “cleans” the key’s text so that Bitwarden can import it.

1 Like

I tried this workaround for a 25519 key, but after clicking the import button, nothing happens (also no error)…