SSH Authentication error - "Invalid key data, not base64 encoded"

Hi,

We are having an issue with the class %Net.SSH.Session - it accepts a username, publicKeyFile, privateKeyFile and passPhrase.

This is our example code:

            set ssh = ##class(%Net.SSH.Session).%New()

            set tSC = ssh.Connect("172.10.10.1", 22)

            $$$ThrowOnError(tSC)

           

            set Username = "a"

            set passphrase = "123"

            set pub = "C:\FTPServer\pubkey\publicKey.pub"           

            set priv = "C:\FTPServer\private.key"

           

            set tSC = ssh.AuthenticateWithKeyPair(Username,pub,priv,passphrase)

            $$$ThrowOnError(tSC)

 

We are getting the following error:

ERROR #7500: SSH AuthenticateWithKeyPair Error '-2146430960': SSH Error [80101010]: Invalid key data, not base64 encoded [80101010] at Session.cpp:313,0

 

We have generated our RSA public / private keys  in an OpenSSH format using PuttyGen.

Any help on this would be appreciated.

  • + 1
  • 2
  • 415
  • 4
  • 1

Answers

OpenSSH format is the correct public key format, so your format should be ok.  The private key should be PEM encoded.

I've seen this happen sometimes when the key is in the correct format but the file has extra blank space in it, so I'd recommend making sure the key is all on one line with no white space or line breaks.  Whether this should matter is debated, but it's easy to to check.

This error is coming from the libssh2 library, so if you want to research it further, you could look into other people using that library who've seen it. 

Thanks for your reply.

We have tried formatting the private key as one line. However, we do not think its getting that far as its failing on the public key stage. 

Here is an example public key / private key that we are generating (test purposes only):

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-testkey"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhNIpZ7HqZb3WRQmSn93OElEK5v3vYO5KJdfS
/5acJdTUvSYS+xn3wf56OLCvmgBsm8B7kc988lqYO90OH4hCR2UwpvG/wDRv0qyw
INWJTX/9UGASZmgLiKf3WdW+JmOrgwOiANAvb00U2Judp82JiOLzMF4VAeJYsDeJ
tbUyneEOct711LFpFItU9Fk/DsdeEaK13ZyOUFNX2FK6gC1sgqbFTv5TIHUA1A7h
tKmcfP3mYu6K6mwgknxLHBfd0Qj8a6ak4L8kAgG0G251K7Jf7vIdKPl+hfeH4BG8
rAQ/9cYoowbqwU7uzU7GCSDZHnL6rb01b805/LKCfGsFxZuczw==
---- END SSH2 PUBLIC KEY ----
 

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,183FDFFA8CB7785B

9XIXBgg05uDYvj6d2+wez4JqkZColubZ7vUx1W903NARi9aB0O1VnEGhip0e3Aqk
LAFPqvGFz28atkXXlg5aGrMb4Fbg7Wirf7vKXHMy7TlKbLdTr46pefWG648RnNzk
stXLXUBFjD7nD1D9wWVAdIGqioEqCGKbfCBuo64J/UdboxJNw/t0OGGaK85AUXvZ
ZSTrrRtkUl9sB6NzENVixo4+ZD9097wDRHO3oKMCTRMYlh2qsLF3Xi9y6Nq1Gfye
HlkV/dxvX53jmnQg6ChkfGrQ6tm4VZuQn+aMITsHxIs2oXXdk2I11or0ww+ALAu9
fIQUO8PmzKfoU8y5iwWwHWfObdR+9wq+iFBmzEvdQvADbJ89bNv3DL0QJfN2a8fg
Lgh9KEQFodyWfm4b/RF+myFZwUVVkb9lNe1JIUEf+g3uPLi2UWdbuaR/sOUPu/FM
qX0MVbHyC9hdq0QIAreBLhvTAy9Gu+4hsBgP9Te9B+7hxXOqQe1sFvbJkuq303Mq
fJV0LSRVoik7PPQsTCpZeU9dTenm5NKx+i+iAk7qgyk4oSkkLSwaLxMJ9JBL623x
AGSJZKbH1g59RzObPbaEpHFkAr08iH81rLUMFiYQBWbhCx1twoAJe+3shInVZ1xw
9VGZ821olHjXMMgeUT/+90eyJnfCx6N9iD54Zhb+Iq9KqZStlaXe1tqsma3TL2vt
L3Xq+VKs+ZqpQUX50REbOD5X/GIjC2qA6UuGSRAuBZi/czLX50qGOgXKLV9pEJZk
7QK7+qIeG0GY/tcETzienSI0+Vvkxi8mC+cW+7ZYJ5DjvEh/KH3B09DI++xo+nrz
/fw98GVzauUWa+lwKzfmL5CMhkFEZniutiCusfix/fpPQ4ZL9ELQQVv3A9FwAxsB
+yLosyDeJaZBkPUA1Knn297WJrR9tM1ozwUy+1lKvwnLfzTInYs/raPUTDqSFzph
NwncX6/sY7lubF64GcJ3NQ0STbXZKLfnMUm6i0+C5rYwZtZbIwNhsXWXRgyE+IHY
WV+9zibku9Tf7Dun8FwJ5O7HBhXTalU0sCijWBc9ZxCUWtIE0d+swzKa34F/eQ2N
Flk6OR6X7vjyL1C/NIhIt6zPFbnIvEn77ZsKWyMpbhvhoMfdC0Z9Uha+jF8QpBpY
7Cyi+R0hfHOKgMXkFw2vTNkqoQJOfixpmV04oeVZLJfeHAJ+iB9I2si7NNKsiXp8
T/LZDRJECsXJJ5bWD7gPGv59O0JI1Sw5Y+c5A7k6r+4Xrfj8IfNY7zdXCxpWSC+h
Gc4FtQUuM3+A4ScFv8R1147jfE9u2B19thuUOv4daoVHwuAkNj/T5ra7uv/pVF4Q
VGrukGEjy9SFnPDljjTenLIB9Uz8MEcUvUD1Z+a+hNKIVLPH7NvbBUavoDTWcC5X
X+ptwRh4m7bbNBV5Po3t5sSErDUqsFCFkmvpzsuNxpQTgwzw0e6XO1vZGSQOSRmq
ztSYwFvK7B7f8SYM1eW2ZXbW84ziQx6LBzG6jgEz6U9zbkJnngbRjGVV8elQx/98
ZPstMZj3zqPvdboDGstIJDAc/XODMCi05zBbfqFmT1Y4j9gsH2FIOA==
-----END RSA PRIVATE KEY-----
 

The format on that public key doesn't look right.  OpenSSH format keys usually start with ssh-rsa, then the encoded key.  They do not have ascii armor (the -----BEGIN SSH2 PUBLIC KEY----- part.)

Try copy-pasting the field "Public key for pasting into OpenSSH authorized_keys file" from PuTTYgen into a file and use that as the public key - this should be in the format Katherine mentioned.

That was the issue! Worked as soon as we copied and pasted it from that box.

We used the "Save public key" button which saved it in a different format.

Thanks both!